From 0c5a7f56e10265d0ce95aac8302762da2d6c3d09 Mon Sep 17 00:00:00 2001 From: Stefan Holst Date: Thu, 29 Oct 2020 16:45:33 +0900 Subject: [PATCH] Project Import --- .gitignore | 5 + README.md | 33 ++ UsageExamples.ipynb | 645 +++++++++++++++++++++++++++++++++++ kyupy/__init__.py | 106 ++++++ kyupy/bench.py | 43 +++ kyupy/bittools.py | 23 ++ kyupy/circuit.py | 236 +++++++++++++ kyupy/logic_sim.py | 418 +++++++++++++++++++++++ kyupy/packed_vectors.py | 299 ++++++++++++++++ kyupy/saed.py | 185 ++++++++++ kyupy/sdf.py | 213 ++++++++++++ kyupy/stil.py | 249 ++++++++++++++ kyupy/verilog.py | 161 +++++++++ kyupy/wave_sim.py | 401 ++++++++++++++++++++++ kyupy/wave_sim_cuda.py | 282 +++++++++++++++ tests/__init__.py | 0 tests/b01.bench | 64 ++++ tests/b01.v | 96 ++++++ tests/b14.sdf.gz | Bin 0 -> 310725 bytes tests/b14.stil.gz | Bin 0 -> 89388 bytes tests/b14.v.gz | Bin 0 -> 104515 bytes tests/conftest.py | 8 + tests/gates.sdf | 29 ++ tests/gates.v | 11 + tests/test_bench.py | 15 + tests/test_circuit.py | 56 +++ tests/test_logic_sim.py | 161 +++++++++ tests/test_packed_vectors.py | 88 +++++ tests/test_sdf.py | 100 ++++++ tests/test_stil.py | 9 + tests/test_verilog.py | 9 + tests/test_wave_sim.py | 138 ++++++++ 32 files changed, 4083 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 UsageExamples.ipynb create mode 100644 kyupy/__init__.py create mode 100644 kyupy/bench.py create mode 100644 kyupy/bittools.py create mode 100644 kyupy/circuit.py create mode 100644 kyupy/logic_sim.py create mode 100644 kyupy/packed_vectors.py create mode 100644 kyupy/saed.py create mode 100644 kyupy/sdf.py create mode 100644 kyupy/stil.py create mode 100644 kyupy/verilog.py create mode 100644 kyupy/wave_sim.py create mode 100644 kyupy/wave_sim_cuda.py create mode 100644 tests/__init__.py create mode 100644 tests/b01.bench create mode 100644 tests/b01.v create mode 100644 tests/b14.sdf.gz create mode 100644 tests/b14.stil.gz create mode 100644 tests/b14.v.gz create mode 100644 tests/conftest.py create mode 100644 tests/gates.sdf create mode 100644 tests/gates.v create mode 100644 tests/test_bench.py create mode 100644 tests/test_circuit.py create mode 100644 tests/test_logic_sim.py create mode 100644 tests/test_packed_vectors.py create mode 100644 tests/test_sdf.py create mode 100644 tests/test_stil.py create mode 100644 tests/test_verilog.py create mode 100644 tests/test_wave_sim.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c563798 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +**/__pycache__ +**/.ipynb_checkpoints +**/.pytest_cache +**/.DS_Store +**/*.pyc diff --git a/README.md b/README.md new file mode 100644 index 0000000..ccf43e7 --- /dev/null +++ b/README.md @@ -0,0 +1,33 @@ +KyuPy - Processing VLSI Circuits With Ease +========================================== + +KyuPy is a python package for high-performance processing and analysis of +non-hierarchical VLSI designs. Its purpose is to provide a rapid prototyping +platform to aid and accelerate research in the fields of VLSI test, diagnosis +and reliability. KyuPy is freely available under the MIT license. + +Main Features +------------- + +* Partial [lark](https://github.com/lark-parser/lark)-parsers for common files used with synthesized designs: bench, gate-level verilog, standard delay format (SDF), standard test interface language (STIL) +* Bit-parallel gate-level 2-, 4-, and 8-valued logic simulation +* GPU-accelerated high-throughput gate-level timing simulation +* High-performance through the use of [numpy](https://numpy.org) and [numba](https://numba.pydata.org) + + +Getting Started +--------------- + +KyuPy requires python 3.6+ and the following packages: +* [lark-parser](https://pypi.org/project/lark-parser) +* [numpy](https://pypi.org/project/numpy) +* [numba](https://pypi.org/project/numba) (required only for GPU/CUDA support) + +GPU/CUDA support may [require some additional setup](https://numba.pydata.org/numba-doc/latest/cuda/index.html). If CUDA or numba is not available, the package will automatically fall back to pure python execution. + +This repository contains tests that can be run with: +``` +pytest +``` + +Usage examples to get familiar with the API can be found in the Jupyter Notebook [UsageExamples.ipynb](UsageExamples.ipynb). diff --git a/UsageExamples.ipynb b/UsageExamples.ipynb new file mode 100644 index 0000000..75fbe06 --- /dev/null +++ b/UsageExamples.ipynb @@ -0,0 +1,645 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Loading and Exploring Gate-Level Circuits" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Example of parsing the bench data format to make simple gate-level circuits." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0000000.334 W Cuda unavailable. Falling back to pure python\n" + ] + } + ], + "source": [ + "from kyupy import bench\n", + "\n", + "# parse a file\n", + "b01 = bench.parse('tests/b01.bench')\n", + "\n", + "# ... or specify the circuit as string \n", + "mycircuit = bench.parse('input(a,b) output(o1,o2,o3) x=buf(a) o1=not(x) o2=buf(x) o3=buf(x)')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Circuits are objects of the class `Circuit`." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b01" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mycircuit" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Circuits are containers for two types of elements: nodes and lines.\n", + "* A `Node` is a named entity in a circuit (e.g. a gate, a standard cell, a named signal, or a fan-out point) that has connections to other nodes.\n", + "* A `Line` is a directional 1:1 connection between two Nodes.\n", + "\n", + "Use the `dump()` method to get a string representation of all nodes and their connections." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "None(0,1,2,3,4)\n", + "0:__fork__\"a\" >1\n", + "1:__fork__\"b\" \n", + "2:__fork__\"o1\" <2 \n", + "3:__fork__\"o2\" <4 \n", + "4:__fork__\"o3\" <6 \n", + "5:buf\"x\" <1 >0\n", + "6:__fork__\"x\" <0 >3 >5 >7\n", + "7:not\"o1\" <3 >2\n", + "8:buf\"o2\" <5 >4\n", + "9:buf\"o3\" <7 >6\n" + ] + } + ], + "source": [ + "print(mycircuit.dump())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The first line of the dump starts with the circuit name (\"None\" for `mycircuit`), followed by the node-IDs of all the ports (inputs and outputs) of the circuit.\n", + "\n", + "Each of the following lines describes one node.\n", + "Each node in the circuit has a unique ID, a type, a name, and line-connections. This information is given on each line in that order.\n", + "\n", + "A line in the circuit has a unique ID, a driver node and a receiver node. The connections in the dump show the direction (\">\" for output, \"<\" for input) and the line-ID. For example in `mycircuit`: Node-0 has one output connected to Line-1, and this Line-1 is connected to the input of Node-5.\n", + "\n", + "The `interface` is the list of nodes forming the ports (inputs and outputs):" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0:__fork__\"a\" >1,\n", + " 1:__fork__\"b\" ,\n", + " 2:__fork__\"o1\" <2 ,\n", + " 3:__fork__\"o2\" <4 ,\n", + " 4:__fork__\"o3\" <6 ]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mycircuit.interface" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Nodes\n", + "\n", + "There are two types of nodes: __forks__ and __cells__.\n", + "\n", + "Forks have the special type `__fork__` while cells can be of various types (`buf`, `not`, `and`, `nor`, etc.).\n", + "Forks are used to label signals with names and to connect a one cell to multiple other cells (fan-out).\n", + "The names among all forks and among all cells within a circuit are unique.\n", + "Thus, a fork and a cell are allowed to share the same name.\n", + "\n", + "Nodes in circuits can be accessed by ID or by name." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "7:not\"o1\" <3 >2" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mycircuit.nodes[7]" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "6:__fork__\"x\" <0 >3 >5 >7" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mycircuit.forks['x']" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "5:buf\"x\" <1 >0" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mycircuit.cells['x']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nodes have an `index` (the node ID), a `kind` (the type), a `name`, as well as `ins` (input pins) and `outs` (output pins)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(6, '__fork__', 'x', [0], [3, 5, 7])" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "n = mycircuit.nodes[6]\n", + "n.index, n.kind, n.name, n.ins, n.outs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The inputs and outputs of a node are lists containing `Line` objects." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "kyupy.circuit.Line" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(n.ins[0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Lines\n", + "\n", + "A line is a directional connection between one driving node (`driver`) and one reading node (`reader`).\n", + "\n", + "A line also knows to which node pins it is connected to: `driver_pin`, `reader_pin`." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(5, 6:__fork__\"x\" <0 >3 >5 >7, 8:buf\"o2\" <5 >4, 1, 0)" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "l = mycircuit.nodes[6].outs[1]\n", + "l.index, l.driver, l.reader, l.driver_pin, l.reader_pin" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Basic Analysis Examples\n", + "### Cell type statistics" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "defaultdict(, {'DFF': 5, 'AND': 1, 'NAND': 28, 'OR': 1, 'NOT': 10})\n" + ] + } + ], + "source": [ + "from collections import defaultdict\n", + "\n", + "counts = defaultdict(int)\n", + "\n", + "for n in b01.cells.values():\n", + " counts[n.kind] += 1\n", + "\n", + "print(counts)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Tracing a scan chain" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from kyupy import verilog\n", + "\n", + "b14 = verilog.parse('tests/b14.v.gz')\n", + "b14" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "chain length 229\n", + "['Scan_Out', 'u04_opt1329', 'u04_opt1328', 'wr_reg', 'u04_opt11', 'state_reg_0_0', 'reg3_reg_28_0', 'reg3_reg_27_0', 'reg3_reg_26_0', 'reg3_reg_25_0', 'reg3_reg_24_0', 'u04_opt1123', 'reg3_reg_23_0', 'reg3_reg_22_0', 'reg3_reg_21_0', 'u04_opt1118', 'reg3_reg_20_0', 'reg3_reg_19_0', 'reg3_reg_18_0', 'reg3_reg_17_0', 'reg3_reg_16_0', 'reg3_reg_15_0', 'reg3_reg_14_0', 'reg3_reg_13_0', 'reg3_reg_12_0', 'reg3_reg_11_0', 'reg3_reg_10_0', 'reg3_reg_9_0', 'reg3_reg_8_0', 'reg3_reg_7_0', 'reg3_reg_6_0', 'reg3_reg_5_0', 'reg3_reg_4_0', 'reg3_reg_3_0', 'reg3_reg_2_0', 'reg3_reg_1_0', 'reg3_reg_0_0', 'reg2_reg_31_0', 'reg2_reg_30_0', 'reg2_reg_29_0', 'reg2_reg_28_0', 'reg2_reg_27_0', 'reg2_reg_26_0', 'reg2_reg_25_0', 'reg2_reg_24_0', 'reg2_reg_23_0', 'reg2_reg_22_0', 'reg2_reg_21_0', 'reg2_reg_20_0', 'reg2_reg_19_0', 'reg2_reg_18_0', 'reg2_reg_17_0', 'reg2_reg_16_0', 'reg2_reg_15_0', 'reg2_reg_14_0', 'reg2_reg_13_0', 'reg2_reg_12_0', 'reg2_reg_11_0', 'reg2_reg_10_0', 'reg2_reg_9_0', 'reg2_reg_8_0', 'reg2_reg_7_0', 'reg2_reg_6_0', 'reg2_reg_5_0', 'reg2_reg_4_0', 'reg2_reg_3_0', 'reg2_reg_2_0', 'reg2_reg_1_0', 'reg2_reg_0_0', 'reg1_reg_31_0', 'reg1_reg_30_0', 'reg1_reg_29_0', 'reg1_reg_28_0', 'reg1_reg_27_0', 'reg1_reg_26_0', 'reg1_reg_25_0', 'reg1_reg_24_0', 'reg1_reg_23_0', 'reg1_reg_22_0', 'reg1_reg_21_0', 'reg1_reg_20_0', 'reg1_reg_19_0', 'reg1_reg_18_0', 'reg1_reg_17_0', 'reg1_reg_16_0', 'reg1_reg_15_0', 'reg1_reg_14_0', 'reg1_reg_13_0', 'reg1_reg_12_0', 'reg1_reg_11_0', 'reg1_reg_10_0', 'reg1_reg_9_0', 'reg1_reg_8_0', 'reg1_reg_7_0', 'reg1_reg_6_0', 'reg1_reg_5_0', 'reg1_reg_4_0', 'reg1_reg_3_0', 'reg1_reg_2_0', 'reg1_reg_1_0', 'reg1_reg_0_0', 'reg0_reg_31_0', 'reg0_reg_30_0', 'reg0_reg_29_0', 'reg0_reg_28_0', 'reg0_reg_27_0', 'reg0_reg_26_0', 'reg0_reg_25_0', 'reg0_reg_24_0', 'reg0_reg_23_0', 'reg0_reg_22_0', 'reg0_reg_21_0', 'reg0_reg_20_0', 'reg0_reg_19_0', 'reg0_reg_18_0', 'reg0_reg_17_0', 'reg0_reg_16_0', 'reg0_reg_15_0', 'reg0_reg_14_0', 'reg0_reg_13_0', 'reg0_reg_12_0', 'reg0_reg_11_0', 'reg0_reg_10_0', 'reg0_reg_9_0', 'reg0_reg_8_0', 'reg0_reg_7_0', 'reg0_reg_6_0', 'reg0_reg_5_0', 'reg0_reg_4_0', 'reg0_reg_3_0', 'reg0_reg_2_0', 'reg0_reg_1_0', 'reg0_reg_0_0', 'rd_reg', 'datao_reg_31_0', 'datao_reg_30_0', 'datao_reg_29_0', 'datao_reg_28_0', 'datao_reg_27_0', 'datao_reg_26_0', 'datao_reg_25_0', 'datao_reg_24_0', 'datao_reg_23_0', 'datao_reg_22_0', 'datao_reg_21_0', 'datao_reg_20_0', 'datao_reg_19_0', 'datao_reg_18_0', 'datao_reg_17_0', 'datao_reg_16_0', 'datao_reg_15_0', 'datao_reg_14_0', 'datao_reg_13_0', 'datao_reg_12_0', 'datao_reg_11_0', 'datao_reg_10_0', 'datao_reg_9_0', 'datao_reg_8_0', 'datao_reg_7_0', 'datao_reg_6_0', 'datao_reg_5_0', 'datao_reg_4_0', 'datao_reg_3_0', 'datao_reg_2_0', 'datao_reg_1_0', 'datao_reg_0_0', 'd_reg_1_0', 'd_reg_0_0', 'addr_reg_19_0', 'addr_reg_18_0', 'addr_reg_17_0', 'addr_reg_16_0', 'addr_reg_15_0', 'addr_reg_14_0', 'addr_reg_13_0', 'addr_reg_12_0', 'addr_reg_11_0', 'addr_reg_10_0', 'addr_reg_9_0', 'addr_reg_8_0', 'addr_reg_7_0', 'addr_reg_6_0', 'addr_reg_5_0', 'addr_reg_4_0', 'addr_reg_3_0', 'addr_reg_2_0', 'addr_reg_1_0', 'addr_reg_0_0', 'u04_opt1491', 'u04_opt1492', 'u04_opt1364', 'u04_opt1411', 'IR_reg_31_0', 'IR_reg_30_0', 'IR_reg_29_0', 'u04_opt1427', 'IR_reg_28_0', 'IR_reg_27_0', 'IR_reg_26_0', 'IR_reg_25_0', 'IR_reg_24_0', 'IR_reg_23_0', 'IR_reg_22_0', 'IR_reg_21_0', 'IR_reg_20_0', 'IR_reg_19_0', 'IR_reg_18_0', 'IR_reg_17_0', 'IR_reg_16_0', 'IR_reg_15_0', 'IR_reg_14_0', 'IR_reg_13_0', 'IR_reg_12_0', 'IR_reg_11_0', 'IR_reg_10_0', 'IR_reg_9_0', 'IR_reg_8_0', 'IR_reg_7_0', 'IR_reg_6_0', 'IR_reg_5_0', 'IR_reg_4_0', 'IR_reg_3_0', 'IR_reg_2_0', 'u04_opt1347', 'IR_reg_1_0', 'U14573', 'IR_reg_0_0', 'B_reg', 'Scan_In']\n" + ] + } + ], + "source": [ + "chain = []\n", + "cell = b14.cells['Scan_Out']\n", + "chain.append(cell)\n", + "while len(cell.ins) > 0:\n", + " cell = cell.ins[2 if 'SDFF' in cell.kind else 0].driver\n", + " if '__fork__' not in cell.kind:\n", + " chain.append(cell)\n", + " \n", + "print('chain length', len(chain))\n", + "print([c.name for c in chain])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Loading SDFs and STILs" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "from kyupy import verilog, sdf\n", + "from kyupy.saed import pin_index\n", + "from kyupy import stil\n", + "\n", + "b14 = verilog.parse('tests/b14.v.gz')\n", + "df = sdf.parse('tests/b14.sdf.gz')\n", + "lt = df.annotation(b14, pin_index, interconnect=False)\n", + "s = stil.parse('tests/b14.stil.gz')\n", + "t = s.tests8v(b14)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[[0., 0.],\n", + " [0., 0.]],\n", + "\n", + " [[0., 0.],\n", + " [0., 0.]],\n", + "\n", + " [[0., 0.],\n", + " [0., 0.]],\n", + "\n", + " ...,\n", + "\n", + " [[0., 0.],\n", + " [0., 0.]],\n", + "\n", + " [[0., 0.],\n", + " [0., 0.]],\n", + "\n", + " [[0., 0.],\n", + " [0., 0.]]])" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lt" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'00-RFRF01F10FFRFF1FR1F1RR010F0F1RRR-------F------------------------------------------------11110110011100110111111110111000010000001111010111001111110110010101100100001000101001101010010011010000001111110111101110110001011010100011010001111010011101001000011111011101111101010111001100100011111100000101110'" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "t[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 32 Parallel Time Simulations with Waveform Capacity 16\n", + "\n", + "This code will fall back to pure python if no CUDA card is available. This will be quite slow.\n", + "\n", + "Instanciate simulator:" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "from kyupy.wave_sim_cuda import WaveSimCuda, TMAX\n", + "import numpy as np\n", + "\n", + "wsim = WaveSimCuda(b14, lt, sims=32, wavecaps=16)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Main Simulation Loop" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "nvectors = 32 #len(t)\n", + "r = np.zeros((len(wsim.interface), nvectors, 1))\n", + "\n", + "for offset in range(0, nvectors, wsim.sims):\n", + " wsim.assign(t, offset=offset)\n", + " wsim.propagate(sims=nvectors-offset)\n", + " cdata = wsim.capture(time=TMAX, offset=offset)\n", + " r = cdata[...,0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Output some captures data" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(306, 32, 6)" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cdata.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " ...,\n", + " [1., 1., 1., ..., 1., 1., 1.],\n", + " [0., 0., 0., ..., 0., 0., 0.],\n", + " [0., 0., 0., ..., 1., 1., 1.]], dtype=float32)" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "r" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Check for CUDA Support\n", + "\n", + "Try this code to check if CUDA is set up correctly." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from numba import cuda\n", + "\n", + "cuda.detect()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/kyupy/__init__.py b/kyupy/__init__.py new file mode 100644 index 0000000..087659c --- /dev/null +++ b/kyupy/__init__.py @@ -0,0 +1,106 @@ +"""This package provides tools for high-performance processing and validation +of non-hierarchical VLSI circuits to aid rapid prototyping of research code +in the fields of VLSI test, diagnosis and reliability. +""" + +import time +import importlib.util + + +class Log: + def __init__(self): + self.start = time.perf_counter() + self.logfile = None + + def log(self, level, message): + t = time.perf_counter() - self.start + if self.logfile is None: + print(f'{t:011.3f} {level} {message}') + else: + self.logfile.write(f'{t:011.3f} {level} {message}\n') + self.logfile.flush() + + def info(self, message): self.log('-', message) + + def warn(self, message): self.log('W', message) + + def error(self, message): self.log('E', message) + + +log = Log() + + +class MockNumba: + @staticmethod + def njit(func): + def inner(*args, **kwargs): + return func(*args, **kwargs) + return inner + + +class MockCuda: + + def __init__(self): + self.x = 0 + self.y = 0 + + def jit(self, device=False): + outer = self + + def make_launcher(func): + class Launcher(object): + def __init__(self, funcc): + self.func = funcc + + def __call__(self, *args, **kwargs): + # print(f'device func call {self.func.__name__}') + return self.func(*args, **kwargs) + + def __getitem__(self, item): + grid_dim, block_dim = item + # print(f'kernel call {self.func.__name__} grid_dim:{grid_dim} block_dim:{block_dim}') + + def inner(*args, **kwargs): + for grid_x in range(grid_dim[0]): + for grid_y in range(grid_dim[1]): + for block_x in range(block_dim[0]): + for block_y in range(block_dim[1]): + outer.x = grid_x * block_dim[0] + block_x + outer.y = grid_y * block_dim[1] + block_y + self.func(*args, **kwargs) + return inner + return Launcher(func) + + return make_launcher + + @staticmethod + def to_device(array, to=None): + if to is not None: + to[...] = array + return to + return array.copy() + + def synchronize(self): + pass + + def grid(self, dims): + return self.x, self.y + + +if importlib.util.find_spec('numba') is not None: + import numba + import numba.cuda + from numba.cuda.cudadrv.error import CudaSupportError + try: + list(numba.cuda.gpus) + from numba import cuda + except CudaSupportError: + log.warn('Cuda unavailable. Falling back to pure python') + cuda = MockCuda() +else: + numba = MockNumba() + cuda = MockCuda() + log.warn('Numba unavailable. Falling back to pure python') + + + diff --git a/kyupy/bench.py b/kyupy/bench.py new file mode 100644 index 0000000..cf0662d --- /dev/null +++ b/kyupy/bench.py @@ -0,0 +1,43 @@ +from lark import Lark, Transformer +from .circuit import Circuit, Node, Line + + +class BenchTransformer(Transformer): + + def __init__(self, name): + super().__init__() + self.c = Circuit(name) + + def start(self, _): return self.c + + def parameters(self, args): return [self.c.get_or_add_fork(name) for name in args] + + def interface(self, args): self.c.interface.extend(args[0]) + + def assignment(self, args): + name, cell_type, drivers = args + cell = Node(self.c, str(name), str(cell_type)) + Line(self.c, cell, self.c.get_or_add_fork(str(name))) + [Line(self.c, d, cell) for d in drivers] + + +def parse(bench): + grammar = r""" + start: (statement)* + statement: input | output | assignment + input: ("INPUT" | "input") parameters -> interface + output: ("OUTPUT" | "output") parameters -> interface + assignment: NAME "=" NAME parameters + parameters: "(" [ NAME ( "," NAME )* ] ")" + NAME: /[-_a-z0-9]+/i + %ignore ( /\r?\n/ | "#" /[^\n]*/ | /[\t\f ]/ )+ + """ + name = None + if '(' not in str(bench): # No parentheses?: Assuming it is a file name. + name = str(bench).replace('.bench', '') + with open(bench, 'r') as f: + text = f.read() + else: + text = bench + return Lark(grammar, parser="lalr", transformer=BenchTransformer(name)).parse(text) + diff --git a/kyupy/bittools.py b/kyupy/bittools.py new file mode 100644 index 0000000..df4c033 --- /dev/null +++ b/kyupy/bittools.py @@ -0,0 +1,23 @@ +import numpy as np +import importlib.util +if importlib.util.find_spec('numba') is not None: + import numba +else: + from . import numba + print('Numba unavailable. Falling back to pure python') + + +_pop_count_lut = np.asarray([bin(x).count('1') for x in range(256)]) + + +def popcount(a): + return np.sum(_pop_count_lut[a]) + + +_bit_in_lut = np.array([2 ** x for x in range(7, -1, -1)], dtype='uint8') + + +@numba.njit +def bit_in(a, pos): + return a[pos >> 3] & _bit_in_lut[pos & 7] + diff --git a/kyupy/circuit.py b/kyupy/circuit.py new file mode 100644 index 0000000..bad9a67 --- /dev/null +++ b/kyupy/circuit.py @@ -0,0 +1,236 @@ +from collections import deque + + +class GrowingList(list): + def __setitem__(self, index, value): + if index >= len(self): + self.extend([None] * (index + 1 - len(self))) + super().__setitem__(index, value) + + +class IndexList(list): + def __delitem__(self, index): + if index == len(self) - 1: + super().__delitem__(index) + else: + replacement = self.pop() + replacement.index = index + super().__setitem__(index, replacement) + + +class Node: + """A Node is a named entity in a circuit (e.g. a gate, a standard cell, + a named signal, or a fan-out point) that has connections to other nodes. + Each node contains: + + * `self.index`: a circuit-unique integer index. + * `self.kind`: a type describing its function (e.g. 'AND', 'NOR'). + The type '__fork__' is special. It signifies a named signal + or a fan-out in the circuit. Any other type is considered a physical cell. + * `self.name`: a name. Names must be unique among all forks and all cells + in the circuit. However, a fork (`self.kind=='__fork__'`) and a cell with + the same name may coexist. + * `self.ins`: a list of input connections (objects of class `Line`) + * `self.outs`: a list of output connections (objects of class `Line`). + """ + def __init__(self, circuit, name, kind='__fork__'): + if kind == '__fork__': + if name in circuit.forks: + raise ValueError(f'fork of name {name} already exists.') + circuit.forks[name] = self + else: + if name in circuit.cells: + raise ValueError(f'cell of name {name} already exists.') + circuit.cells[name] = self + self.index = len(circuit.nodes) + circuit.nodes.append(self) + self.circuit = circuit + self.name = name + self.kind = kind + self.ins = GrowingList() + self.outs = GrowingList() + + def __repr__(self): + ins = ' '.join([f'<{line.index}' if line is not None else '{line.index}' if line is not None else '>None' for line in self.outs]) + return f'{self.index}:{self.kind}"{self.name}" {ins} {outs}' + + def remove(self): + if self.circuit is not None: + del self.circuit.nodes[self.index] + if self.kind == '__fork__': + del self.circuit.forks[self.name] + else: + del self.circuit.cells[self.name] + self.circuit = None + + +class Line: + """A Line is a directional 1:1 connection between two Nodes. It always + connects an output of a node (called `driver`) to an input of a node + (called `reader`) and has a circuit-unique index (`self.index`). + + Furthermore, `self.driver_pin` and `self.reader_pin` are the + integer indices of the connected pins of the nodes. They always correspond + to the positions of the line in the connection lists of the nodes: + + * `self.driver.outs[self.driver_pin] == self` + * `self.reader.ins[self.reader_pin] == self` + + A Line always connects a single driver to a single reader. If a signal fans out to + multiple readers, a '__fork__' Node needs to be added. + """ + def __init__(self, circuit, driver, reader): + self.index = len(circuit.lines) + circuit.lines.append(self) + if type(driver) is Node: + self.driver = driver + self.driver_pin = len(driver.outs) + for pin, line in enumerate(driver.outs): + if line is None: + self.driver_pin = pin + break + else: + self.driver, self.driver_pin = driver + if type(reader) is Node: + self.reader = reader + self.reader_pin = len(reader.ins) + for pin, line in enumerate(reader.ins): + if line is None: + self.reader_pin = pin + break + else: + self.reader, self.reader_pin = reader + self.driver.outs[self.driver_pin] = self + self.reader.ins[self.reader_pin] = self + + def remove(self): + circuit = None + if self.driver is not None: + self.driver.outs[self.driver_pin] = None + circuit = self.driver.circuit + if self.reader is not None: + self.reader.ins[self.reader_pin] = None + circuit = self.reader.circuit + if circuit is not None: + del circuit.lines[self.index] + self.driver = None + self.reader = None + + def __repr__(self): + return f'{self.index}' + + def __lt__(self, other): + return self.index < other.index + + +class Circuit: + """A Circuit is a container for interconnected nodes and lines. + + All contained lines have unique indices, so have all contained nodes. + These indices can be used to store additional data about nodes or lines + by allocating an array `my_data` of length `len(self.nodes)` and then + accessing it by `my_data[n.index]`. The indices may change iff lines or + nodes are removed from the circuit. + + Nodes come in two flavors (cells and forks, see `Node`). The names of + these nodes are kept unique within these two flavors. + """ + def __init__(self, name=None): + self.name = name + self.nodes = IndexList() + self.lines = IndexList() + self.interface = GrowingList() + self.cells = {} + self.forks = {} + + def get_or_add_fork(self, name): + return self.forks[name] if name in self.forks else Node(self, name) + + def copy(self): + c = Circuit(self.name) + for node in self.nodes: + Node(c, node.name, node.kind) + for line in self.lines: + d = c.forks[line.driver.name] if line.driver.kind == '__fork__' else c.cells[line.driver.name] + r = c.forks[line.reader.name] if line.reader.kind == '__fork__' else c.cells[line.reader.name] + Line(c, (d, line.driver_pin), (r, line.reader_pin)) + for node in self.interface: + if node.kind == '__fork__': + n = c.forks[node.name] + else: + n = c.cells[node.name] + c.interface.append(n) + return c + + def dump(self): + header = f'{self.name}({",".join([str(n.index) for n in self.interface])})\n' + return header + '\n'.join([str(n) for n in self.nodes]) + + def __repr__(self): + name = f" '{self.name}'" if self.name else '' + return f'' + + def topological_order(self): + visit_count = [0] * len(self.nodes) + queue = deque(n for n in self.nodes if len(n.ins) == 0 or 'DFF' in n.kind) + while len(queue) > 0: + n = queue.popleft() + for line in n.outs: + if line is None: continue + succ = line.reader + visit_count[succ.index] += 1 + if visit_count[succ.index] == len(succ.ins) and 'DFF' not in succ.kind: + queue.append(succ) + yield n + + def topological_line_order(self): + for n in self.topological_order(): + for line in n.outs: + if line is not None: + yield line + + def reversed_topological_order(self): + visit_count = [0] * len(self.nodes) + queue = deque(n for n in self.nodes if len(n.outs) == 0 or 'DFF' in n.kind) + while len(queue) > 0: + n = queue.popleft() + for line in n.ins: + pred = line.driver + visit_count[pred.index] += 1 + if visit_count[pred.index] == len(pred.outs) and 'DFF' not in pred.kind: + queue.append(pred) + yield n + + def fanin(self, origin_nodes): + marks = [False] * len(self.nodes) + for n in origin_nodes: + marks[n.index] = True + for n in self.reversed_topological_order(): + if not marks[n.index]: + for line in n.outs: + if line is not None: + marks[n.index] |= marks[line.reader.index] + if marks[n.index]: + yield n + + def fanout_free_regions(self): + for stem in self.reversed_topological_order(): + if len(stem.outs) == 1 and 'DFF' not in stem.kind: continue + region = [] + if 'DFF' in stem.kind: + n = stem.ins[0] + if len(n.driver.outs) == 1 and 'DFF' not in n.driver.kind: + queue = deque([n.driver]) + else: + queue = deque() + else: + queue = deque(n.driver for n in stem.ins + if len(n.driver.outs) == 1 and 'DFF' not in n.driver.kind) + while len(queue) > 0: + n = queue.popleft() + preds = [pred.driver for pred in n.ins + if len(pred.driver.outs) == 1 and 'DFF' not in pred.driver.kind] + queue.extend(preds) + region.append(n) + yield stem, region diff --git a/kyupy/logic_sim.py b/kyupy/logic_sim.py new file mode 100644 index 0000000..1ede8ee --- /dev/null +++ b/kyupy/logic_sim.py @@ -0,0 +1,418 @@ +import numpy as np +from . import packed_vectors + + +class LogicSim: + """A bit-parallel naive combinational logic simulator supporting 1, 4, or 8-valued logics. + """ + def __init__(self, circuit, nvectors=1, vdim=1): + self.circuit = circuit + self.nvectors = nvectors + nbytes = (nvectors - 1) // 8 + 1 + self.interface = list(circuit.interface) + [n for n in circuit.nodes if 'dff' in n.kind.lower()] + self.state = np.zeros((len(circuit.lines), vdim, nbytes), dtype='uint8') + self.state_epoch = np.zeros(len(circuit.nodes), dtype='int8') - 1 + self.tmp = np.zeros((5, vdim, nbytes), dtype='uint8') + self.zero = np.zeros((vdim, nbytes), dtype='uint8') + if vdim > 1: + self.zero[1] = 255 + self.epoch = 0 + + self.fork_vd1 = self.fork_vdx + self.const0_vd1 = self.const0_vdx + self.input_vd1 = self.fork_vd1 + self.output_vd1 = self.fork_vd1 + self.inv_vd1 = self.not_vd1 + self.nbuff_vd1 = self.fork_vd1 + self.xor2_vd1 = self.xor_vd1 + + self.fork_vd2 = self.fork_vdx + self.const0_vd2 = self.const0_vdx + self.input_vd2 = self.fork_vd2 + self.output_vd2 = self.fork_vd2 + self.inv_vd2 = self.not_vd2 + self.nbuff_vd2 = self.fork_vd2 + self.xor2_vd2 = self.xor_vd2 + + self.fork_vd3 = self.fork_vdx + self.const0_vd3 = self.const0_vdx + self.input_vd3 = self.fork_vd3 + self.output_vd3 = self.fork_vd3 + self.inv_vd3 = self.not_vd3 + self.nbuff_vd3 = self.fork_vd3 + self.xor2_vd3 = self.xor_vd3 + + known_fct = [(f[:-4], getattr(self, f)) for f in dir(self) if f.endswith(f'_vd{vdim}')] + self.node_fct = [] + for n in circuit.nodes: + t = n.kind.lower().replace('__fork__', 'fork') + t = t.replace('__const0__', 'const0') + t = t.replace('__const1__', 'const1') + t = t.replace('tieh', 'const1') + # t = t.replace('xor', 'or').replace('xnor', 'nor') + fcts = [f for n, f in known_fct if t.startswith(n)] + if len(fcts) < 1: + raise ValueError(f'Unknown node kind {n.kind}') + self.node_fct.append(fcts[0]) + + def assign(self, stimuli): + if isinstance(stimuli, packed_vectors.PackedVectors): + stimuli = stimuli.bits + for (stim, node) in zip(stimuli, self.interface): + if len(node.outs) == 0: continue + outputs = [self.state[line.index] if line else self.tmp[3] for line in node.outs] + self.node_fct[node.index]([stim], outputs) + for line in node.outs: + if line: + self.state_epoch[line.reader.index] = self.epoch + for n in self.circuit.nodes: + if (n.kind == '__const1__') or (n.kind == '__const0__'): + outputs = [self.state[line.index] if line else self.tmp[3] for line in n.outs] + self.node_fct[n.index]([], outputs) + # print('assign const') + for line in n.outs: + if line: + self.state_epoch[line.reader.index] = self.epoch + + def capture(self, responses): + if isinstance(responses, packed_vectors.PackedVectors): + responses = responses.bits + for (resp, node) in zip(responses, self.interface): + if len(node.ins) == 0: continue + resp[...] = self.state[node.ins[0].index] + + def propagate(self): + for node in self.circuit.topological_order(): + if self.state_epoch[node.index] != self.epoch: continue + inputs = [self.state[line.index] if line else self.zero for line in node.ins] + outputs = [self.state[line.index] if line else self.tmp[3] for line in node.outs] + # print('sim', node) + self.node_fct[node.index](inputs, outputs) + for line in node.outs: + self.state_epoch[line.reader.index] = self.epoch + self.epoch = (self.epoch + 1) % 128 + + @staticmethod + def fork_vdx(inputs, outputs): + for o in outputs: o[...] = inputs[0] + + def const0_vdx(self, _, outputs): + for o in outputs: o[...] = self.zero + + # 2-valued simulation + + @staticmethod + def not_vd1(inputs, outputs): + outputs[0][0] = ~inputs[0][0] + + def const1_vd1(self, _, outputs): + for o in outputs: o[...] = self.zero + self.not_vd1(outputs, outputs) + + @staticmethod + def and_vd1(inputs, outputs): + o = outputs[0] + o[0] = inputs[0][0] + for i in inputs[1:]: o[0] &= i[0] + + @staticmethod + def or_vd1(inputs, outputs): + o = outputs[0] + o[0] = inputs[0][0] + for i in inputs[1:]: o[0] |= i[0] + + @staticmethod + def xor_vd1(inputs, outputs): + o = outputs[0] + o[0] = inputs[0][0] + for i in inputs[1:]: o[0] ^= i[0] + + @staticmethod + def sdff_vd1(inputs, outputs): + outputs[0][0] = inputs[0][0] + if len(outputs) > 1: + outputs[1][0] = ~inputs[0][0] + + @staticmethod + def dff_vd1(inputs, outputs): + outputs[0][0] = inputs[0][0] + if len(outputs) > 1: + outputs[1][0] = ~inputs[0][0] + + def nand_vd1(self, inputs, outputs): + self.and_vd1(inputs, outputs) + self.not_vd1(outputs, outputs) + + def nor_vd1(self, inputs, outputs): + self.or_vd1(inputs, outputs) + self.not_vd1(outputs, outputs) + + def xnor_vd1(self, inputs, outputs): + self.xor_vd1(inputs, outputs) + self.not_vd1(outputs, outputs) + + # 4-valued simulation + # sym [0] [1] (value, care) + # 0 0 1 + # 1 1 1 + # - 0 0 + # X 1 0 + + @staticmethod + def not_vd2(inputs, outputs): + # 4-valued not: + # i: 0 1 - X + # o: 1 0 X X + # o0 1 0 1 1 + # o1 1 1 0 0 + + outputs[0][0] = ~inputs[0][0] | ~inputs[0][1] # value = 0 or DC + outputs[0][1] = inputs[0][1] # care = C + + def and_vd2(self, inputs, outputs): + # 4-valued: o[0]: o[1]: + # 0 1 - X 0 1 - X 0 1 - X + # 0 0 0 0 0 0 0 0 0 1 1 1 1 + # 1 0 1 X X 0 1 1 1 1 1 0 0 + # - 0 X X X 0 1 1 1 1 0 0 0 + # X 0 X X X 0 1 1 1 1 0 0 0 + + i = inputs[0] + any0 = self.tmp[0] + anyd = self.tmp[1] + any0[0] = ~i[0] & i[1] + anyd[0] = ~i[1] + for i in inputs[1:]: + any0[0] |= ~i[0] & i[1] + anyd[0] |= ~i[1] + o = outputs[0] + o[0] = ~any0[0] # value = no0 + o[1] = any0[0] | ~anyd[0] # care = any0 or noDC + + def or_vd2(self, inputs, outputs): + # 4-valued: o[0]: o[1]: + # 0 1 - X 0 1 - X 0 1 - X + # 0 0 1 X X 0 1 1 1 1 1 0 0 + # 1 1 1 1 1 1 1 1 1 1 1 1 1 + # - X 1 X X 1 1 1 1 0 1 0 0 + # X X 1 X X 1 1 1 1 0 1 0 0 + + i = inputs[0] + any1 = self.tmp[0] + anyd = self.tmp[1] + any1[0] = i[0] & i[1] + anyd[0] = ~i[1] + for i in inputs[1:]: + any1[0] |= i[0] & i[1] + anyd[0] |= ~i[1] + o = outputs[0] + o[0] = any1[0] | anyd[0] # value = any1 or anyDC + o[1] = any1[0] | ~anyd[0] # care = any1 or noDC + + def xor_vd2(self, inputs, outputs): + # 4-valued: o[0]: o[1]: + # 0 1 - X 0 1 - X 0 1 - X + # 0 0 1 X X 0 1 1 1 1 1 0 0 + # 1 1 0 X X 1 0 1 1 1 1 0 0 + # - X X X X 1 1 1 1 0 0 0 0 + # X X X X X 1 1 1 1 0 0 0 0 + + i = inputs[0] + odd1 = self.tmp[0] + anyd = self.tmp[1] + odd1[0] = i[0] & i[1] + anyd[0] = ~i[1] + for i in inputs[1:]: + odd1[0] ^= i[0] & i[1] + anyd[0] |= ~i[1] + o = outputs[0] + o[0] = odd1[0] | anyd[0] # value = odd1 or anyDC + o[1] = ~anyd[0] # care = noDC + + def sdff_vd2(self, inputs, outputs): + self.dff_vd2(inputs, outputs) + if len(outputs) > 1: + outputs[1][0] = ~inputs[0][0] | ~inputs[0][1] # value = 0 or DC + outputs[1][1] = inputs[0][1] # care = C + + @staticmethod + def dff_vd2(inputs, outputs): + outputs[0][0] = inputs[0][0] | ~inputs[0][1] # value = 1 or DC + outputs[0][1] = inputs[0][1] # care = C + + def nand_vd2(self, inputs, outputs): + self.and_vd2(inputs, outputs) + self.not_vd2(outputs, outputs) + + def nor_vd2(self, inputs, outputs): + self.or_vd2(inputs, outputs) + self.not_vd2(outputs, outputs) + + def xnor_vd2(self, inputs, outputs): + self.xor_vd2(inputs, outputs) + self.not_vd2(outputs, outputs) + + def const1_vd2(self, _, outputs): + for o in outputs: o[...] = self.zero + self.not_vd2(outputs, outputs) + + # 8-valued simulation + # sym [0] [1] [2] (initial value, ~final value, toggles present?) + # 0 0 1 0 + # 1 1 0 0 + # - 0 0 0 + # X 1 1 0 + # R 0 0 1 _/" + # F 1 1 1 "\_ + # P 0 1 1 _/\_ + # N 1 0 1 "\/" + + def not_vd3(self, inputs, outputs): + # 8-valued not: + # i: 0 1 - X R F P N + # i0 0 1 0 1 0 1 0 1 + # i1 1 0 0 1 0 1 1 0 + # i2 0 0 0 0 1 1 1 1 + # o: 1 0 X X F R N P + # o0 1 0 1 1 1 0 1 0 + # o1 0 1 1 1 1 0 0 1 + # o2 0 0 0 0 1 1 1 1 + i = inputs[0] + dc = self.tmp[0] + dc[0] = ~(i[0] ^ i[1]) & ~i[2] + dc = self.tmp[0] + outputs[0][0] = ~i[0] | dc[0] # init.v = ~i0 or DC + outputs[0][1] = ~i[1] | dc[0] # init.v = ~i1 or DC + outputs[0][2] = i[2] # toggles = i2 + + def and_vd3(self, inputs, outputs): + # 8-valued: o[0]: o[1]: o[2]: + # 0 1 - X R F P N 0 1 - X R F P N 0 1 - X R F P N 0 1 - X R F P N + # 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 + # 1 0 1 X X R F P N 0 1 1 1 0 1 0 1 1 0 1 1 0 1 1 0 0 0 0 0 1 1 1 1 + # - 0 X X X X X X X 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 + # X 0 X X X X X X X 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 + # R 0 R X X R R P R 0 0 1 1 0 0 0 0 1 0 1 1 0 0 1 0 0 1 0 0 1 1 1 1 + # F 0 F X X R F P F 0 1 1 1 0 1 0 1 1 1 1 1 0 1 1 1 0 1 0 0 1 1 1 1 + # P 0 P X X P P P P 0 0 1 1 0 0 0 0 1 1 1 1 1 1 1 1 0 1 0 0 1 1 1 1 + # N 0 N X X R F P N 0 1 1 1 0 1 0 1 1 0 1 1 0 1 1 0 0 1 0 0 1 1 1 1 + i = inputs[0] + anyi0 = self.tmp[0] + anyf0 = self.tmp[1] + anyd = self.tmp[2] + any0 = self.tmp[3] + any_t = self.tmp[4] + anyd[0] = ~(i[0] ^ i[1]) & ~i[2] + anyi0[0] = ~i[0] & ~anyd[0] + anyf0[0] = i[1] & ~anyd[0] + any_t[0] = i[2] + any0[0] = anyi0[0] & anyf0[0] & ~i[2] + for i in inputs[1:]: + dc = ~(i[0] ^ i[1]) & ~i[2] + anyd[0] |= dc + anyi0[0] |= ~i[0] & ~dc + anyf0[0] |= i[1] & ~dc + any_t[0] |= i[2] + any0[0] |= ~i[0] & ~dc & i[1] & ~i[2] + o = outputs[0] + o[0] = (~anyi0[0] | anyd[0]) & ~any0[0] # initial = no_i0 or DC + o[1] = anyf0[0] | anyd[0] # ~final = ~no_f0 or DC + o[2] = any_t[0] & ~(anyd[0] | any0[0]) # toggle = anyT and noDC and no0 + + def or_vd3(self, inputs, outputs): + # 8-valued: o[0]: o[1]: o[2]: + # 0 1 - X R F P N 0 1 - X R F P N 0 1 - X R F P N 0 1 - X R F P N + # 0 0 1 X X R F P N 0 1 1 1 0 1 0 1 1 0 1 1 0 1 1 0 0 0 0 0 1 1 1 1 + # 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + # - X 1 X X X X X X 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 + # X X 1 X X X X X X 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 + # R R 1 X X R N R R 0 1 1 1 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 1 1 1 + # F F 1 X X N F F F 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 0 0 0 1 1 1 1 + # P P 1 X X R F P N 0 1 1 1 0 1 0 1 1 0 1 1 0 1 1 0 1 0 0 0 1 1 1 1 + # N N 1 X X R F N N 1 1 1 1 0 1 1 1 0 0 1 1 0 1 0 0 1 0 0 0 1 1 1 1 + i = inputs[0] + anyi1 = self.tmp[0] + anyf1 = self.tmp[1] + anyd = self.tmp[2] + any1 = self.tmp[3] + any_t = self.tmp[4] + anyd[0] = ~(i[0] ^ i[1]) & ~i[2] + anyi1[0] = i[0] & ~anyd[0] + anyf1[0] = ~i[1] & ~anyd[0] + any_t[0] = i[2] + any1[0] = (anyi1[0] & anyf1[0]) & ~i[2] + for i in inputs[1:]: + dc = ~(i[0] ^ i[1]) & ~i[2] + anyd[0] |= dc + anyi1[0] |= i[0] & ~dc + anyf1[0] |= ~i[1] & ~dc + any_t[0] |= i[2] + any1[0] |= i[0] & ~dc & ~i[1] & ~i[2] + o = outputs[0] + o[0] = anyi1[0] | anyd[0] # initial = i1 or DC + o[1] = (~anyf1[0] | anyd[0]) & ~any1[0] # ~final = f1 or DC + o[2] = any_t[0] & ~(anyd[0] | any1[0]) # toggle = anyT and no(DC or 1) + + def xor_vd3(self, inputs, outputs): + # 8-valued: o[0]: o[1]: o[2]: + # 0 1 - X R F P N 0 1 - X R F P N 0 1 - X R F P N 0 1 - X R F P N + # 0 0 1 X X R F P N 0 1 1 1 0 1 0 1 1 0 1 1 0 1 1 0 0 0 0 0 1 1 1 1 + # 1 1 0 X X F R N P 1 0 1 1 1 0 1 0 0 1 1 1 1 0 0 1 0 0 0 0 1 1 1 1 + # - X X X X X X X X 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 + # X X X X X X X X X 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 + # R R F X X P N R F 0 1 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 1 0 0 1 1 1 1 + # F F R X X N P F R 1 0 1 1 1 0 1 0 1 0 1 1 0 1 1 0 1 1 0 0 1 1 1 1 + # P P N X X R F P N 0 1 1 1 0 1 0 1 1 0 1 1 0 1 1 0 1 1 0 0 1 1 1 1 + # N N P X X F R N P 1 0 1 1 1 0 1 0 0 1 1 1 1 0 0 1 1 1 0 0 1 1 1 1 + i = inputs[0] + odd0 = self.tmp[0] + odd1 = self.tmp[1] + anyd = self.tmp[2] + anyt = self.tmp[3] + odd0[0] = i[0] + odd1[0] = i[1] + anyd[0] = ~(i[0] ^ i[1]) & ~i[2] + anyt[0] = i[2] + for i in inputs[1:]: + odd0[0] ^= i[0] + odd1[0] ^= i[1] + anyd[0] |= ~(i[0] ^ i[1]) & ~i[2] + anyt[0] |= i[2] + o = outputs[0] + o[0] = odd0[0] | anyd[0] + o[1] = ~odd1[0] | anyd[0] + o[2] = anyt[0] & ~anyd[0] + + def sdff_vd3(self, inputs, outputs): + self.dff_vd3(inputs, outputs) + if len(outputs) > 1: + i = inputs[0] + dc = self.tmp[0] + dc[0] = ~(i[0] ^ i[1]) & ~i[2] + outputs[1][0] = ~i[0] | dc[0] # value = 1 or DC + outputs[1][1] = ~i[1] | dc[0] # value = 1 or DC + outputs[1][2] = i[2] # toggle = T + + def dff_vd3(self, inputs, outputs): + i = inputs[0] + dc = self.tmp[0] + dc[0] = ~(i[0] ^ i[1]) & ~i[2] + outputs[0][0] = i[0] | dc[0] # value = 1 or DC + outputs[0][1] = i[1] | dc[0] # value = 1 or DC + outputs[0][2] = i[2] # toggle = T + + def nand_vd3(self, inputs, outputs): + self.and_vd3(inputs, outputs) + self.not_vd3(outputs, outputs) + + def nor_vd3(self, inputs, outputs): + self.or_vd3(inputs, outputs) + self.not_vd3(outputs, outputs) + + def xnor_vd3(self, inputs, outputs): + self.xor_vd3(inputs, outputs) + self.not_vd3(outputs, outputs) + + def const1_vd3(self, _, outputs): + for o in outputs: o[...] = self.zero + self.not_vd3(outputs, outputs) diff --git a/kyupy/packed_vectors.py b/kyupy/packed_vectors.py new file mode 100644 index 0000000..ffd3dda --- /dev/null +++ b/kyupy/packed_vectors.py @@ -0,0 +1,299 @@ +import numpy as np +from .bittools import popcount, bit_in + + +class PackedVectors: + def __init__(self, nvectors=8, width=1, vdim=1, from_cache=None): + if from_cache is not None: + self.bits = np.array(from_cache) + self.width, self.vdim, nbytes = self.bits.shape + else: + self.bits = np.zeros((width, vdim, (nvectors - 1) // 8 + 1), dtype='uint8') + self.vdim = vdim + self.width = width + self.nvectors = nvectors + m1 = np.array([2 ** x for x in range(7, -1, -1)], dtype='uint8') + m0 = ~m1 + self.mask = np.rollaxis(np.vstack((m0, m1)), 1) + + @classmethod + def from_pair(cls, init, final): + assert init.nvectors == final.nvectors + assert len(init.bits) == len(final.bits) + init_v = init.bits[:, 0] + if init.vdim == 3: + init_c = (init.bits[:, 0] ^ init.bits[:, 1]) | init.bits[:, 2] + elif init.vdim == 2: + init_c = init.bits[:, 1] + else: + init_c = ~np.zeros_like(init.bits[:, 0]) + final_v = final.bits[:, 0] + if final.vdim == 3: + final_c = (final.bits[:, 0] ^ final.bits[:, 1]) | final.bits[:, 2] + final_v = ~final.bits[:, 1] + elif final.vdim == 2: + final_c = final.bits[:, 1] + else: + final_c = ~np.zeros_like(final.bits[:, 0]) + c = init_c & final_c + a0 = init_v & c + a1 = ~final_v & c + a2 = (init_v ^ final_v) & c + p = PackedVectors(init.nvectors, len(init.bits), 3) + p.bits[:, 0] = a0 + p.bits[:, 1] = a1 + p.bits[:, 2] = a2 + return p + + def transition_vectors(self): + a = PackedVectors(self.nvectors-1, self.width, 3) + for pos in range(self.width): + for vidx in range(self.nvectors-1): + tr = self.get_value(vidx, pos) + self.get_value(vidx+1, pos) + if tr == '00': + a.set_value(vidx, pos, '0') + elif tr == '11': + a.set_value(vidx, pos, '1') + elif tr == '01': + a.set_value(vidx, pos, 'R') + elif tr == '10': + a.set_value(vidx, pos, 'F') + elif tr == '--': + a.set_value(vidx, pos, '-') + else: + a.set_value(vidx, pos, 'X') + return a + + def __add__(self, other): + a = PackedVectors(self.nvectors + other.nvectors, self.width, max(self.vdim, other.vdim)) + # a.bits[:self.bits.shape[0], 0] = self.bits[:, 0] + # if self.vdim == 2: + # a.bits[:self.bits.shape[0], 1] = self.care_bits + # elif self.vdim == 3: + # a.bits[:self.bits.shape[0], 1] = ~self.value_bits + # a.bits[:self.bits.shape[0], 2] = self.toggle_bits + for i in range(self.nvectors): + a[i] = self[i] + for i in range(len(other)): + a[self.nvectors+i] = other[i] + return a + + def __len__(self): + return self.nvectors + + def randomize(self, one_probability=0.5): + for data in self.bits: + data[0] = np.packbits((np.random.rand(self.nvectors) < one_probability).astype(int)) + if self.vdim == 2: + data[1] = 255 + elif self.vdim == 3: + data[1] = ~np.packbits((np.random.rand(self.nvectors) < one_probability).astype(int)) + data[2] = data[0] ^ ~data[1] + + def copy(self, selection_mask=None): + if selection_mask is not None: + cpy = PackedVectors(popcount(selection_mask), len(self.bits), self.vdim) + cur = 0 + for vidx in range(self.nvectors): + if bit_in(selection_mask, vidx): + cpy[cur] = self[vidx] + cur += 1 + else: + cpy = PackedVectors(self.nvectors, len(self.bits), self.vdim) + np.copyto(cpy.bits, self.bits) + return cpy + + @property + def care_bits(self): + if self.vdim == 1: + return self.bits[:, 0] | 255 + elif self.vdim == 2: + return self.bits[:, 1] + elif self.vdim == 3: + return (self.bits[:, 0] ^ self.bits[:, 1]) | self.bits[:, 2] + + @property + def initial_bits(self): + return self.bits[:, 0] + + @property + def value_bits(self): + if self.vdim == 3: + return ~self.bits[:, 1] + else: + return self.bits[:, 0] + + @property + def toggle_bits(self): + if self.vdim == 3: + return self.bits[:, 2] + else: + return self.bits[:, 0] & 0 + + def get_value(self, vector, position): + if vector >= self.nvectors: + raise IndexError(f'vector out of range: {vector} >= {self.nvectors}') + a = self.bits[position, :, vector // 8] + m = self.mask[vector % 8] + if self.vdim == 1: + return '1' if a[0] & m[1] else '0' + elif self.vdim == 2: + if a[0] & m[1]: + return '1' if a[1] & m[1] else 'X' + else: + return '0' if a[1] & m[1] else '-' + elif self.vdim == 3: + if a[2] & m[1]: + if a[0] & m[1]: + return 'F' if a[1] & m[1] else 'N' + else: + return 'P' if a[1] & m[1] else 'R' + else: + if a[0] & m[1]: + return 'X' if a[1] & m[1] else '1' + else: + return '0' if a[1] & m[1] else '-' + + def get_values_for_position(self, position): + return ''.join(self.get_value(x, position) for x in range(self.nvectors)) + + def set_value(self, vector, position, v): + if vector >= self.nvectors: + raise IndexError(f'vector out of range: {vector} >= {self.nvectors}') + a = self.bits[position, :, vector // 8] + m = self.mask[vector % 8] + if self.vdim == 1: + self._set_value_vd1(a, m, v) + elif self.vdim == 2: + self._set_value_vd2(a, m, v) + elif self.vdim == 3: + self._set_value_vd3(a, m, v) + + def set_values(self, vector, v, mapping=None, inversions=None): + if vector >= self.nvectors: + raise IndexError(f'vector out of range: {vector} >= {self.nvectors}') + if not mapping: + mapping = [y for y in range(len(v))] + if inversions is None: + inversions = [False] * len(v) + for i, c in enumerate(v): + if inversions[i]: + if c == '1': + c = '0' + elif c == '0': + c = '1' + elif c == 'H': + c = 'L' + elif c == 'L': + c = 'H' + elif c == 'R': + c = 'F' + elif c == 'F': + c = 'R' + self.set_value(vector, mapping[i], c) + + def set_values_for_position(self, position, values): + for i, v in enumerate(values): + self.set_value(i, position, v) + + def __setitem__(self, vector, value): + for i, c in enumerate(value): + self.set_value(vector, i, c) + + def __getitem__(self, vector): + if isinstance(vector, slice): + first = self.get_values_for_position(0)[vector] + ret = PackedVectors(len(first), self.width, self.vdim) + ret.set_values_for_position(0, first) + for pos in range(1, self.width): + ret.set_values_for_position(pos, self.get_values_for_position(pos)[vector]) + return ret + return ''.join(self.get_value(vector, pos) for pos in range(len(self.bits))) + + @staticmethod + def _set_value_vd1(a, m, v): + if v in [True, 1, '1', 'H', 'h']: + a[0] |= m[1] + else: + a[0] &= m[0] + + @staticmethod + def _set_value_vd2(a, m, v): + if v in [True, 1, '1', 'H', 'h']: + a[0] |= m[1] + a[1] |= m[1] + elif v in [False, 0, '0', 'L', 'l']: + a[0] &= m[0] + a[1] |= m[1] + elif v in ['X', 'x']: + a[0] |= m[1] + a[1] &= m[0] + else: + a[0] &= m[0] + a[1] &= m[0] + + # i fb act + # a 0 1 2 + # - 0 0 0 None, '-' + # 0 0 1 0 False, 0, '0', 'l', 'L' + # 1 1 0 0 True, 1, '1', 'h', 'H' + # X 1 1 0 'x', 'X' + # / 0 0 1 '/', 'r', 'R' + # ^ 0 1 1 '^', 'p', 'P' + # v 1 0 1 'v', 'n', 'N' + # \ 1 1 1 '\', 'f', 'F' + @staticmethod + def _set_value_vd3(a, m, v): + if v in [False, 0, '0', 'L', 'l']: + a[0] &= m[0] + a[1] |= m[1] + a[2] &= m[0] + elif v in [True, 1, '1', 'H', 'h']: + a[0] |= m[1] + a[1] &= m[0] + a[2] &= m[0] + elif v in ['X', 'x']: + a[0] |= m[1] + a[1] |= m[1] + a[2] &= m[0] + elif v in ['/', 'r', 'R']: + a[0] &= m[0] + a[1] &= m[0] + a[2] |= m[1] + elif v in ['^', 'p', 'P']: + a[0] &= m[0] + a[1] |= m[1] + a[2] |= m[1] + elif v in ['v', 'n', 'N']: + a[0] |= m[1] + a[1] &= m[0] + a[2] |= m[1] + elif v in ['\\', 'f', 'F']: + a[0] |= m[1] + a[1] |= m[1] + a[2] |= m[1] + else: + a[0] &= m[0] + a[1] &= m[0] + a[2] &= m[0] + + def __repr__(self): + return f'' + + def __str__(self): + lst = [] + for p in range(self.nvectors): + lst.append(''.join(self.get_value(p, w) for w in range(len(self.bits)))) + if len(lst) == 0: return '' + if len(lst[0]) > 64: + lst = [s[:32] + '...' + s[-32:] for s in lst] + if len(lst) <= 16: + return '\n'.join(lst) + else: + return '\n'.join(lst[:8]) + '\n...\n' + '\n'.join(lst[-8:]) + + def diff(self, other, out=None): + if out is None: + out = np.zeros((self.width, self.bits.shape[-1]), dtype='uint8') + out[...] = (self.value_bits ^ other.value_bits) & self.care_bits & other.care_bits + return out diff --git a/kyupy/saed.py b/kyupy/saed.py new file mode 100644 index 0000000..10fca85 --- /dev/null +++ b/kyupy/saed.py @@ -0,0 +1,185 @@ +from kyupy.circuit import Node, Line + + +def pin_index(cell_type, pin): + if cell_type.startswith('MUX21') and pin == 'S': return 2 + if cell_type.startswith('SDFF') and pin == 'QN': return 1 + if cell_type.startswith('DFF') and pin == 'QN': return 1 + if cell_type.startswith('DFF') and pin == 'CLK': return 1 + if pin in ['A2', 'IN2', 'SE', 'B', 'CO']: return 1 + if pin in ['A3', 'IN3', 'SI', 'CI']: return 2 + if pin == 'A4' or pin == 'IN4' or pin == 'CLK': return 3 # CLK for scan cells SDFF + if pin == 'A5' or pin == 'IN5' or pin == 'RSTB': return 4 + if pin == 'A6' or pin == 'IN6' or pin == 'SETB': return 5 + return 0 + + +def pin_is_output(kind, pin): + if 'MUX' in kind and pin == 'S': + return False + return pin in ['Q', 'QN', 'Z', 'ZN', 'Y', 'CO', 'S'] + + +def add_and_connect(circuit, name, kind, in1=None, in2=None, out=None): + n = Node(circuit, name, kind) + if in1 is not None: + n.ins[0] = in1 + in1.reader = n + in1.reader_pin = 0 + if in2 is not None: + n.ins[1] = in2 + in2.reader = n + in2.reader_pin = 1 + if out is not None: + n.outs[0] = out + out.driver = n + out.driver_pin = 0 + return n + + +def split_complex_gates(circuit): + node_list = circuit.nodes + for n in node_list: + name = n.name + ins = n.ins + outs = n.outs + if n.kind.startswith('AO21X'): + n.remove() + n_and = add_and_connect(circuit, name+'~and', 'AND2', ins[0], ins[1], None) + n_or = add_and_connect(circuit, name+'~or', 'OR2', None, ins[2], outs[0]) + Line(circuit, n_and, n_or) + elif n.kind.startswith('AOI21X'): + n.remove() + n_and = add_and_connect(circuit, name+'~and', 'AND2', ins[0], ins[1], None) + n_nor = add_and_connect(circuit, name+'~nor', 'NOR2', None, ins[2], outs[0]) + Line(circuit, n_and, n_nor) + elif n.kind.startswith('OA21X'): + n.remove() + n_or = add_and_connect(circuit, name+'~or', 'OR2', ins[0], ins[1], None) + n_and = add_and_connect(circuit, name+'~and', 'AND2', None, ins[2], outs[0]) + Line(circuit, n_or, n_and) + elif n.kind.startswith('OAI21'): + n.remove() + n_or = add_and_connect(circuit, name+'~or', 'OR2', ins[0], ins[1], None) + n_nand = add_and_connect(circuit, name+'~nand', 'NAND2', None, ins[2], outs[0]) + Line(circuit, n_or, n_nand) + elif n.kind.startswith('OA22X'): + n.remove() + n_or0 = add_and_connect(circuit, name+'~or0', 'OR2', ins[0], ins[1], None) + n_or1 = add_and_connect(circuit, name+'~or1', 'OR2', ins[2], ins[3], None) + n_and = add_and_connect(circuit, name+'~and', 'AND2', None, None, outs[0]) + Line(circuit, n_or0, n_and) + Line(circuit, n_or1, n_and) + elif n.kind.startswith('AO22X'): + n.remove() + n_and0 = add_and_connect(circuit, name+'~and0', 'AND2', ins[0], ins[1], None) + n_and1 = add_and_connect(circuit, name+'~and1', 'AND2', ins[2], ins[3], None) + n_or = add_and_connect(circuit, name+'~or', 'OR2', None, None, outs[0]) + Line(circuit, n_and0, n_or) + Line(circuit, n_and1, n_or) + elif n.kind.startswith('AO221X'): + n.remove() + n_and0 = add_and_connect(circuit, name+'~and0', 'AND2', ins[0], ins[1], None) + n_and1 = add_and_connect(circuit, name+'~and1', 'AND2', ins[2], ins[3], None) + n_or0 = add_and_connect(circuit, name+'~or0', 'OR2', None, None, None) + n_or1 = add_and_connect(circuit, name+'~or1', 'OR2', None, ins[4], outs[0]) + Line(circuit, n_and0, n_or0) + Line(circuit, n_and1, n_or0) + Line(circuit, n_or0, n_or1) + elif n.kind.startswith('AOI221X'): + n.remove() + n_and0 = add_and_connect(circuit, name+'~and0', 'AND2', ins[0], ins[1], None) + n_and1 = add_and_connect(circuit, name+'~and1', 'AND2', ins[2], ins[3], None) + n_or = add_and_connect(circuit, name+'~or', 'OR2', None, None, None) + n_nor = add_and_connect(circuit, name+'~nor', 'NOR2', None, ins[4], outs[0]) + Line(circuit, n_and0, n_or) + Line(circuit, n_and1, n_or) + Line(circuit, n_or, n_nor) + elif n.kind.startswith('OA221X'): + n.remove() + n_or0 = add_and_connect(circuit, name+'~or0', 'OR2', ins[0], ins[1], None) + n_or1 = add_and_connect(circuit, name+'~or1', 'OR2', ins[2], ins[3], None) + n_and0 = add_and_connect(circuit, name+'~and0', 'AND2', None, None, None) + n_and1 = add_and_connect(circuit, name+'~and1', 'AND2', None, ins[4], outs[0]) + Line(circuit, n_or0, n_and0) + Line(circuit, n_or1, n_and0) + Line(circuit, n_and0, n_and1) + elif n.kind.startswith('AO222X'): + n.remove() + n_and0 = add_and_connect(circuit, name+'~and0', 'AND2', ins[0], ins[1], None) + n_and1 = add_and_connect(circuit, name+'~and1', 'AND2', ins[2], ins[3], None) + n_and2 = add_and_connect(circuit, name+'~and2', 'AND2', ins[4], ins[5], None) + n_or0 = add_and_connect(circuit, name+'~or0', 'OR2', None, None, None) + n_or1 = add_and_connect(circuit, name+'~or1', 'OR2', None, None, outs[0]) + Line(circuit, n_and0, n_or0) + Line(circuit, n_and1, n_or0) + Line(circuit, n_and2, n_or1) + Line(circuit, n_or0, n_or1) + elif n.kind.startswith('AOI222X'): + n.remove() + n_and0 = add_and_connect(circuit, name+'~and0', 'AND2', ins[0], ins[1], None) + n_and1 = add_and_connect(circuit, name+'~and1', 'AND2', ins[2], ins[3], None) + n_and2 = add_and_connect(circuit, name+'~and2', 'AND2', ins[4], ins[5], None) + n_or0 = add_and_connect(circuit, name+'~or0', 'OR2', None, None, None) + n_nor1 = add_and_connect(circuit, name+'~nor1', 'NOR2', None, None, outs[0]) + Line(circuit, n_and0, n_or0) + Line(circuit, n_and1, n_or0) + Line(circuit, n_and2, n_nor1) + Line(circuit, n_or0, n_nor1) + elif n.kind.startswith('OA222X'): + n.remove() + n_or0 = add_and_connect(circuit, name+'~or0', 'OR2', ins[0], ins[1], None) + n_or1 = add_and_connect(circuit, name+'~or1', 'OR2', ins[2], ins[3], None) + n_or2 = add_and_connect(circuit, name+'~or2', 'OR2', ins[4], ins[5], None) + n_and0 = add_and_connect(circuit, name+'~and0', 'AND2', None, None, None) + n_and1 = add_and_connect(circuit, name+'~and1', 'AND2', None, None, outs[0]) + Line(circuit, n_or0, n_and0) + Line(circuit, n_or1, n_and0) + Line(circuit, n_or2, n_and1) + Line(circuit, n_and0, n_and1) + elif n.kind.startswith('NOR3X'): + n.remove() + n_or = add_and_connect(circuit, name+'~or', 'OR2', ins[0], ins[1], None) + n_nor = add_and_connect(circuit, name+'~nor', 'NOR2', None, ins[2], outs[0]) + Line(circuit, n_or, n_nor) + elif n.kind.startswith('FADDX'): + n.remove() + # forks for fan-outs + f_a = add_and_connect(circuit, name + '~fork0', '__fork__', ins[0]) + f_b = add_and_connect(circuit, name + '~fork1', '__fork__', ins[1]) + f_ci = add_and_connect(circuit, name + '~fork2', '__fork__', ins[2]) + f_ab = Node(circuit, name + '~fork3') + # sum-block + n_xor0 = Node(circuit, name + '~xor0', 'XOR2') + Line(circuit, f_a, n_xor0) + Line(circuit, f_b, n_xor0) + Line(circuit, n_xor0, f_ab) + if len(outs) > 0 and outs[0] is not None: + n_xor1 = add_and_connect(circuit, name + '~xor1', 'XOR2', None, None, outs[0]) + Line(circuit, f_ab, n_xor1) + Line(circuit, f_ci, n_xor1) + # carry-block + if len(outs) > 1 and outs[1] is not None: + n_and0 = Node(circuit, name + '~and0', 'AND2') + Line(circuit, f_ab, n_and0) + Line(circuit, f_ci, n_and0) + n_and1 = Node(circuit, name + '~and1', 'AND2') + Line(circuit, f_a, n_and1) + Line(circuit, f_b, n_and1) + n_or = add_and_connect(circuit, name + '~or0', 'OR2', None, None, outs[1]) + Line(circuit, n_and0, n_or) + Line(circuit, n_and1, n_or) + elif n.kind.startswith('MUX21X'): + n.remove() + f_s = add_and_connect(circuit, name + '~fork0', '__fork__', ins[2]) + n_not = Node(circuit, name + '~not', 'INV') + Line(circuit, f_s, n_not) + n_and0 = add_and_connect(circuit, name + '~and0', 'AND2', ins[0]) + n_and1 = add_and_connect(circuit, name + '~and1', 'AND2', ins[1]) + n_or0 = add_and_connect(circuit, name + '~or0', 'OR2', None, None, outs[0]) + Line(circuit, n_not, n_and0) + Line(circuit, f_s, n_and1) + Line(circuit, n_and0, n_or0) + Line(circuit, n_and1, n_or0) + + diff --git a/kyupy/sdf.py b/kyupy/sdf.py new file mode 100644 index 0000000..e6db7f7 --- /dev/null +++ b/kyupy/sdf.py @@ -0,0 +1,213 @@ +import numpy as np +from lark import Lark, Transformer +from collections import namedtuple +from . import log +import gzip + +Interconnect = namedtuple('Interconnect', ['orig', 'dest', 'r', 'f']) +IOPath = namedtuple('IOPath', ['ipin', 'opin', 'r', 'f']) + + +class DelayFile: + def __init__(self, name, cells): + self.name = name + if None in cells: + self.interconnects = cells[None] + else: + self.interconnects = None + self.cells = dict((n, l) for n, l in cells.items() if n) + + def __repr__(self): + return '\n'.join(f'{n}: {l}' for n, l in self.cells.items()) + '\n' + \ + '\n'.join(str(i) for i in self.interconnects) + + def annotation(self, circuit, pin_index_f, dataset=1, interconnect=True, ffdelays=True): + """ + Constructs an 3-dimensional array with timing data for each line in `circuit`. + Dimension 1 of the returned array is the line index. + Dimension 2 is the type of timing data: 0:`delay`, 1:`pulse rejection limit`. + Dimension 3 is the polarity at the output of the reading node: 0:`rising`, 1:`falling`. + + The polarity for pulse rejection is determined by the latter transition of the pulse. + E.g., timing[42,1,0] is the rejection limit of a negative pulse at the output of the reader of line 42. + + An IOPATH delay for a node is annotated to the line connected to the input pin specified in the IOPATH. + + Currently, only ABSOLUTE IOPATH and INTERCONNECT delays are supported. + Pulse rejection limits are derived from absolute delays, explicit declarations (PATHPULSE etc.) are ignored. + + + :param ffdelays: + :param interconnect: + :param pin_index_f: + :param circuit: + :type dataset: int or tuple + """ + def select_del(_delvals, idx): + if type(dataset) is tuple: + s = 0 + for d in dataset: + s += _delvals[idx][d] + return s / len(dataset) + else: + return _delvals[idx][dataset] + + def find_cell(name): + if name not in circuit.cells: + name = name.replace('\\', '') + if name not in circuit.cells: + name = name.replace('[', '_').replace(']', '_') + if name not in circuit.cells: + return None + return circuit.cells[name] + + timing = np.zeros((len(circuit.lines), 2, 2)) + for cn, iopaths in self.cells.items(): + for ipn, opn, *delvals in iopaths: + delvals = [d if len(d) > 0 else [0, 0, 0] for d in delvals] + if max(max(delvals)) == 0: + continue + cell = find_cell(cn) + if cell is None: + log.warn(f'Cell from SDF not found in circuit: {cn}') + continue + ipin = pin_index_f(cell.kind, ipn) + opin = pin_index_f(cell.kind, opn) + kind = cell.kind.lower() + + ipn2 = ipn.replace('(posedge A1)', 'A1').replace('(negedge A1)', 'A1')\ + .replace('(posedge A2)', 'A2').replace('(negedge A2)', 'A2') + + def add_delays(_line): + if _line is not None: + timing[_line.index, :, 0] += select_del(delvals, 0) + timing[_line.index, :, 1] += select_del(delvals, 1) + + take_avg = False + if kind.startswith('sdff'): + if not ipn.startswith('(posedge CLK'): + continue + if ffdelays and (len(cell.outs) > opin): + add_delays(cell.outs[opin]) + else: + if kind.startswith(('xor', 'xnor')): + ipin = pin_index_f(cell.kind, ipn2) + # print(ipn, ipin, times[cell.i_lines[ipin].index, 0, 0]) + take_avg = timing[cell.ins[ipin].index].sum() > 0 + add_delays(cell.ins[ipin]) + if take_avg: + timing[cell.ins[ipin].index] /= 2 + + if not interconnect or self.interconnects is None: + return timing + + for n1, n2, *delvals in self.interconnects: + delvals = [d if len(d) > 0 else [0, 0, 0] for d in delvals] + if max(max(delvals)) == 0: + continue + if '/' in n1: + i = n1.rfind('/') + cn1 = n1[0:i] + pn1 = n1[i+1:] + else: + cn1, pn1 = (n1, 'Z') + if '/' in n2: + i = n2.rfind('/') + cn2 = n2[0:i] + pn2 = n2[i+1:] + else: + cn2, pn2 = (n2, 'IN') + c1 = find_cell(cn1) + if c1 is None: + log.warn(f'Cell from SDF not found in circuit: {cn1}') + continue + c2 = find_cell(cn2) + if c2 is None: + log.warn(f'Cell from SDF not found in circuit: {cn2}') + continue + p1, p2 = pin_index_f(c1.kind, pn1), pin_index_f(c2.kind, pn2) + line = None + f1, f2 = c1.outs[p1].reader, c2.ins[p2].driver + if f1 != f2: # possible branchfork + assert len(f2.ins) == 1 + line = f2.ins[0] + assert f1.outs[f2.ins[0].driver_pin] == line + elif len(f2.outs) == 1: # no fanout? + line = f2.ins[0] + if line is not None: + timing[line.index, :, 0] += select_del(delvals, 0) + timing[line.index, :, 1] += select_del(delvals, 1) + else: + log.warn(f'No branchfork for annotating interconnect delay {c1.name}/{p1}->{c2.name}/{p2}') + return timing + + +def sanitize(args): + if len(args) == 3: args.append(args[2]) + return [str(args[0]), str(args[1])] + args[2:] + + +class SdfTransformer(Transformer): + @staticmethod + def triple(args): return [float(a.value[:-1]) if len(a.value) > 1 else 0.0 for a in args] + + @staticmethod + def interconnect(args): return Interconnect(*sanitize(args)) + + @staticmethod + def iopath(args): return IOPath(*sanitize(args)) + + @staticmethod + def cell(args): + name = next((a for a in args if isinstance(a, str)), None) + entries = [e for a in args if hasattr(a, 'children') for e in a.children] + return name, entries + + @staticmethod + def start(args): + name = next((a for a in args if isinstance(a, str)), None) + cells = dict(t for t in args if isinstance(t, tuple)) + return DelayFile(name, cells) + + +def parse(sdf) -> DelayFile: + grammar = r""" + start: "(DELAYFILE" ( "(SDFVERSION" _NOB ")" + | "(DESIGN" "\"" NAME "\"" ")" + | "(DATE" _NOB ")" + | "(VENDOR" _NOB ")" + | "(PROGRAM" _NOB ")" + | "(VERSION" _NOB ")" + | "(DIVIDER" _NOB ")" + | "(VOLTAGE" _NOB ")" + | "(PROCESS" _NOB? ")" + | "(TEMPERATURE" _NOB ")" + | "(TIMESCALE" _NOB ")" + | cell )* ")" + cell: "(CELL" ( "(CELLTYPE" _NOB ")" + | "(INSTANCE" ID? ")" + | "(TIMINGCHECK" _ignore* ")" + | delay )* ")" + delay: "(DELAY" "(ABSOLUTE" (interconnect | iopath)* ")" ")" + interconnect: "(INTERCONNECT" ID ID triple* ")" + iopath: "(IOPATH" ID_OR_EDGE ID_OR_EDGE triple* ")" + NAME: /[^"]+/ + ID_OR_EDGE: ( /[^() ]+/ | "(" /[^)]+/ ")" ) + ID: ( /[^"() ]+/ | "\"" /[^"]+/ "\"" ) + triple: "(" ( /[-.0-9]*:/ /[-.0-9]*:/ /[-.0-9]*\)/ | ")" ) + _ignore: "(" _NOB? _ignore* ")" _NOB? + _NOB: /[^()]+/ + COMMENT: "//" /[^\n]*/ + %ignore ( /\r?\n/ | COMMENT )+ + %ignore /[\t\f ]+/ + """ + if '\n' not in str(sdf): # One line?: Assuming it is a file name. + if str(sdf).endswith('.gz'): + with gzip.open(sdf, 'rt') as f: + text = f.read() + else: + with open(sdf, 'r') as f: + text = f.read() + else: + text = str(sdf) + return Lark(grammar, parser="lalr", transformer=SdfTransformer()).parse(text) diff --git a/kyupy/stil.py b/kyupy/stil.py new file mode 100644 index 0000000..a0081b4 --- /dev/null +++ b/kyupy/stil.py @@ -0,0 +1,249 @@ +from lark import Lark, Transformer +from collections import namedtuple +import re +import gzip +from .packed_vectors import PackedVectors +from .logic_sim import LogicSim + + +Call = namedtuple('Call', ['name', 'parameters']) +ScanPattern = namedtuple('ScanPattern', ['load', 'launch', 'capture', 'unload']) + + +class StilFile: + def __init__(self, version, signal_groups, scan_chains, calls): + self.version = version + self.signal_groups = signal_groups + self.scan_chains = scan_chains + self.si_ports = dict((v[0], k) for k, v in scan_chains.items()) + self.so_ports = dict((v[-1], k) for k, v in scan_chains.items()) + self.calls = calls + self.patterns = [] + launch = {} + capture = {} + load = {} + for call in self.calls: + if call.name == 'load_unload': + unload = {} + for so_port in self.so_ports: + if so_port in call.parameters: + unload[so_port] = call.parameters[so_port].replace('\n', '') + if len(capture) > 0: + self.patterns.append(ScanPattern(load, launch, capture, unload)) + capture = {} + launch = {} + load = {} + for si_port in self.si_ports: + if si_port in call.parameters: + load[si_port] = call.parameters[si_port].replace('\n', '') + if call.name.endswith('_launch') or call.name.endswith('_capture'): + if len(launch) == 0: + launch = dict((k, v.replace('\n', '')) for k, v in call.parameters.items()) + else: + capture = dict((k, v.replace('\n', '')) for k, v in call.parameters.items()) + + def _maps(self, c): + interface = list(c.interface) + [n for n in c.nodes if 'DFF' in n.kind] + intf_pos = dict([(n.name, i) for i, n in enumerate(interface)]) + pi_map = [intf_pos[n] for n in self.signal_groups['_pi']] + po_map = [intf_pos[n] for n in self.signal_groups['_po']] + scan_maps = {} + scan_inversions = {} + for chain_name, chain in self.scan_chains.items(): + scan_map = [] + scan_in_inversion = [] + scan_out_inversion = [] + inversion = False + for n in chain[1:-1]: + if n == '!': + inversion = not inversion + else: + scan_in_inversion.append(inversion) + scan_in_inversion = list(reversed(scan_in_inversion)) + inversion = False + for n in reversed(chain[1:-1]): + if n == '!': + inversion = not inversion + else: + scan_map.append(intf_pos[n]) + scan_out_inversion.append(inversion) + scan_maps[chain[0]] = scan_map + scan_maps[chain[-1]] = scan_map + scan_inversions[chain[0]] = scan_in_inversion + scan_inversions[chain[-1]] = scan_out_inversion + return interface, pi_map, po_map, scan_maps, scan_inversions + + def tests(self, c): + interface, pi_map, po_map, scan_maps, scan_inversions = self._maps(c) + tests = PackedVectors(len(self.patterns), len(interface), 2) + for i, p in enumerate(self.patterns): + for si_port in self.si_ports.keys(): + tests.set_values(i, p.load[si_port], scan_maps[si_port], scan_inversions[si_port]) + tests.set_values(i, p.launch['_pi'], pi_map) + return tests + + def tests8v(self, c): + interface, pi_map, po_map, scan_maps, scan_inversions = self._maps(c) + init = PackedVectors(len(self.patterns), len(interface), 2) + for i, p in enumerate(self.patterns): + # init.set_values(i, '0' * len(interface)) + for si_port in self.si_ports.keys(): + init.set_values(i, p.load[si_port], scan_maps[si_port], scan_inversions[si_port]) + init.set_values(i, p.launch['_pi'], pi_map) + sim4v = LogicSim(c, len(init), 2) + sim4v.assign(init) + sim4v.propagate() + launch = init.copy() + sim4v.capture(launch) + for i, p in enumerate(self.patterns): + # if there was no launch clock, then init = launch + if ('P' not in p.launch['_pi']) or ('P' not in p.capture['_pi']): + for si_port in self.si_ports.keys(): + launch.set_values(i, p.load[si_port], scan_maps[si_port], scan_inversions[si_port]) + if 'P' in p.capture['_pi']: + launch.set_values(i, p.capture['_pi'], pi_map) + + return PackedVectors.from_pair(init, launch) + + def responses(self, c): + interface, pi_map, po_map, scan_maps, scan_inversions = self._maps(c) + resp = PackedVectors(len(self.patterns), len(interface), 2) + for i, p in enumerate(self.patterns): + resp.set_values(i, p.capture['_po'], po_map) + for so_port in self.so_ports.keys(): + resp.set_values(i, p.unload[so_port], scan_maps[so_port], scan_inversions[so_port]) + return resp + + +class StilTransformer(Transformer): + def __init__(self): + super().__init__() + self._signal_groups = None + self._calls = None + self._scan_chains = None + + @staticmethod + def quoted(args): return args[0][1:-1] + + @staticmethod + def call(args): return Call(args[0], dict(args[1:])) + + @staticmethod + def call_parameter(args): return args[0], args[1].value + + @staticmethod + def signal_group(args): return args[0], args[1:] + + @staticmethod + def scan_chain(args): + scan_in = None + scan_cells = None + scan_out = None + for t in args[1:]: + if t.data == 'scan_in': + scan_in = t.children[0] + elif t.data == 'scan_out': + scan_out = t.children[0] + if t.data == 'scan_cells': + scan_cells = [n.replace('.SI', '') for n in t.children] + scan_cells = [re.sub(r'.*\.', '', s) if '.' in s else s for s in scan_cells] + return args[0], ([scan_in] + scan_cells + [scan_out]) + + def signal_groups(self, args): self._signal_groups = dict(args) + + def pattern(self, args): self._calls = [c for c in args if isinstance(c, Call)] + + def scan_structures(self, args): self._scan_chains = dict(args) + + def start(self, args): + return StilFile(float(args[0]), self._signal_groups, self._scan_chains, self._calls) + + +def parse(stil): + grammar = r""" + start: "STIL" FLOAT _ignore _block* + _block: signal_groups | scan_structures | pattern + | "Header" _ignore + | "Signals" _ignore + | "Timing" _ignore + | "PatternBurst" quoted _ignore + | "PatternExec" _ignore + | "Procedures" _ignore + | "MacroDefs" _ignore + + signal_groups: "SignalGroups" "{" signal_group* "}" + signal_group: quoted "=" "'" quoted ( "+" quoted)* "'" _ignore? ";"? + + scan_structures: "ScanStructures" "{" scan_chain* "}" + scan_chain: "ScanChain" quoted "{" ( scan_length + | scan_in | scan_out | scan_inversion | scan_cells | scan_master_clock )* "}" + scan_length: "ScanLength" /[0-9]+/ ";" + scan_in: "ScanIn" quoted ";" + scan_out: "ScanOut" quoted ";" + scan_inversion: "ScanInversion" /[0-9]+/ ";" + scan_cells: "ScanCells" (quoted | /!/)* ";" + scan_master_clock: "ScanMasterClock" quoted ";" + + pattern: "Pattern" quoted "{" ( label | w | c | macro | ann | call )* "}" + label: quoted ":" + w: "W" quoted ";" + c: "C" _ignore + macro: "Macro" quoted ";" + ann: "Ann" _ignore + call: "Call" quoted "{" call_parameter* "}" + call_parameter: quoted "=" /[^;]+/ ";" + + quoted: /"[^"]*"/ + FLOAT: /[-0-9.]+/ + _ignore: "{" _NOB? _ignore_inner* "}" + _ignore_inner: "{" _NOB? _ignore_inner* "}" _NOB? + _NOB: /[^{}]+/ + %ignore ( /\r?\n/ | "//" /[^\n]*/ | /[\t\f ]/ )+ + """ + if '\n' not in str(stil): # One line?: Assuming it is a file name. + if str(stil).endswith('.gz'): + with gzip.open(stil, 'rt') as f: + text = f.read() + else: + with open(stil, 'r') as f: + text = f.read() + else: + text = str(stil) + return Lark(grammar, parser="lalr", transformer=StilTransformer()).parse(text) + + +def extract_scan_pattens(stil_calls): + pats = [] + pi = None + scan_in = None + for call in stil_calls: + if call.name == 'load_unload': + scan_out = call.parameters.get('Scan_Out') + if scan_out is not None: + scan_out = scan_out.replace('\n', '') + if pi: pats.append(ScanPattern(scan_in, pi, None, scan_out)) + scan_in = call.parameters.get('Scan_In') + if scan_in is not None: + scan_in = scan_in.replace('\n', '') + if call.name == 'allclock_capture': + pi = call.parameters['_pi'].replace('\n', '') + return pats + + +def match_patterns(stil_file, pats, interface): + intf_pos = dict([(n.name, i) for i, n in enumerate(interface)]) + pi_map = [intf_pos[n] for n in stil_file.signal_groups['_pi']] + scan_map = [intf_pos[re.sub(r'b..\.', '', n)] for n in reversed(stil_file.scan_chains['1'])] + # print(scan_map) + tests = PackedVectors(len(pats), len(interface), 2) + for i, p in enumerate(pats): + tests.set_values(i, p.scan_in, scan_map) + tests.set_values(i, p.pi, pi_map) + + resp = PackedVectors(len(pats), len(interface), 2) + for i, p in enumerate(pats): + resp.set_values(i, p.pi, pi_map) + resp.set_values(i, p.scan_out, scan_map) + + return tests, resp + diff --git a/kyupy/verilog.py b/kyupy/verilog.py new file mode 100644 index 0000000..2516a81 --- /dev/null +++ b/kyupy/verilog.py @@ -0,0 +1,161 @@ +from lark import Lark, Transformer +from collections import namedtuple +import gzip +from .circuit import Circuit, Node, Line +from .saed import pin_index, pin_is_output + +Instantiation = namedtuple('Instantiation', ['type', 'name', 'pins']) + + +class SignalDeclaration: + + def __init__(self, kind, tokens): + self.left = None + self.right = None + self.kind = kind + if len(tokens.children) == 1: + self.basename = tokens.children[0] + else: + self.basename = tokens.children[2] + self.left = int(tokens.children[0].value) + self.right = int(tokens.children[1].value) + + @property + def names(self): + if self.left is None: + return [self.basename] + if self.left <= self.right: + return [f'{self.basename}[{i}]' for i in range(self.left, self.right + 1)] + else: + return [f'{self.basename}[{i}]' for i in range(self.left, self.right - 1, -1)] + + def __repr__(self): + return f"{self.kind}:{self.basename}[{self.left}:{self.right}]" + + +class VerilogTransformer(Transformer): + def __init__(self, branchforks=False): + super().__init__() + self._signal_declarations = {} + self.branchforks = branchforks + + @staticmethod + def name(args): + s = args[0].value + if s[0] == '\\': + s = s[1:-1] + return s + + @staticmethod + def instantiation(args): + return Instantiation(args[0], args[1], + dict([(pin.children[0], pin.children[1]) for pin in args[2:]])) + + def input(self, args): + for sd in [SignalDeclaration('input', signal) for signal in args]: + self._signal_declarations[sd.basename] = sd + + def inout(self, args): + for sd in [SignalDeclaration('input', signal) for signal in args]: # just treat as input + self._signal_declarations[sd.basename] = sd + + def output(self, args): + for sd in [SignalDeclaration('output', signal) for signal in args]: + self._signal_declarations[sd.basename] = sd + + def wire(self, args): + for sd in [SignalDeclaration('wire', signal) for signal in args]: + self._signal_declarations[sd.basename] = sd + + def module(self, args): + c = Circuit(args[0]) + positions = {} + pos = 0 + for intf_sig in args[1].children: + for name in self._signal_declarations[intf_sig].names: + positions[name] = pos + pos += 1 + assignments = [] + for stmt in args[2:]: # pass 1: instantiate cells and driven signals + if type(stmt) is Instantiation: + n = Node(c, stmt.name, kind=stmt.type) + for p, s in stmt.pins.items(): + if pin_is_output(n.kind, p): + Line(c, (n, pin_index(stmt.type, p)), Node(c, s)) + elif stmt is not None and stmt.data == 'assign': + assignments.append((stmt.children[0], stmt.children[1])) + for sd in self._signal_declarations.values(): + if sd.kind == 'output' or sd.kind == 'input': + for name in sd.names: + n = Node(c, name, kind=sd.kind) + if name in positions: + c.interface[positions[name]] = n + if sd.kind == 'input': + Line(c, n, Node(c, name)) + for s1, s2 in assignments: # pass 1.5: process signal assignments + if s1 in c.forks: + assert s2 not in c.forks, 'assignment between two driven signals' + Line(c, c.forks[s1], Node(c, s2)) + elif s2 in c.forks: + assert s1 not in c.forks, 'assignment between two driven signals' + Line(c, c.forks[s2], Node(c, s1)) + for stmt in args[2:]: # pass 2: connect signals to readers + if type(stmt) is Instantiation: + for p, s in stmt.pins.items(): + n = c.cells[stmt.name] + if pin_is_output(n.kind, p): continue + if s.startswith("1'b"): + const = f'__const{s[3]}__' + if const not in c.cells: + Line(c, Node(c, const, const), Node(c, s)) + fork = c.forks[s] + if self.branchforks: + branchfork = Node(c, fork.name + "~" + n.name) + Line(c, fork, branchfork) + fork = branchfork + Line(c, fork, (n, pin_index(stmt.type, p))) + for sd in self._signal_declarations.values(): + if sd.kind == 'output': + for name in sd.names: + Line(c, c.forks[name], c.cells[name]) + return c + + @staticmethod + def start(args): + if len(args) == 1: + return args[0] + else: + return args + + +def parse(verilog, branchforks=False) -> Circuit: + grammar = """ + start: (module)* + module: "module" name parameters ";" (_statement)* "endmodule" + parameters: "(" [ name ( "," name )* ] ")" + _statement: input | output | inout | tri | wire | assign | instantiation + input: "input" signal ( "," signal )* ";" + output: "output" signal ( "," signal )* ";" + inout: "inout" signal ( "," signal )* ";" + tri: "tri" name ";" + wire: "wire" signal ( "," signal )* ";" + assign: "assign" name "=" name ";" + instantiation: name name "(" [ pin ( "," pin )* ] ")" ";" + pin: "." name "(" name ")" + signal: ( name | "[" /[0-9]+/ ":" /[0-9]+/ "]" name ) + + name: ( /[a-z_][a-z0-9_\\[\\]]*/i | /\\\\[^\\t \\r\\n]+[\\t \\r\\n](\\[[0-9]+\\])?/i | /1'b0/i | /1'b1/i ) + COMMENT: "//" /[^\\n]*/ + %ignore ( /\\r?\\n/ | COMMENT )+ + %ignore /[\\t \\f]+/ + """ + if '\n' not in str(verilog): # One line?: Assuming it is a file name. + if str(verilog).endswith('.gz'): + with gzip.open(verilog, 'rt') as f: + text = f.read() + else: + with open(verilog, 'r') as f: + text = f.read() + else: + text = str(verilog) + return Lark(grammar, parser="lalr", transformer=VerilogTransformer(branchforks)).parse(text) diff --git a/kyupy/wave_sim.py b/kyupy/wave_sim.py new file mode 100644 index 0000000..153d431 --- /dev/null +++ b/kyupy/wave_sim.py @@ -0,0 +1,401 @@ +import numpy as np +import math +from . import numba + + +TMAX = np.float32(2 ** 127) # almost np.PINF for 32-bit floating point values +TMIN = np.float32(-2 ** 127) # almost np.NINF for 32-bit floating point values + + +class WaveSim: + def __init__(self, circuit, timing, sims=8, wavecaps=16): + self.circuit = circuit + self.sims = sims + self.overflows = 0 + self.interface = list(circuit.interface) + [n for n in circuit.nodes if 'dff' in n.kind.lower()] + + self.lst_eat_valid = False + + self.cdata = np.zeros((len(self.interface), sims, 6), dtype='float32') + + if type(wavecaps) is int: + wavecaps = [wavecaps] * len(circuit.lines) + + intf_wavecap = 4 # sufficient for storing only 1 transition. + + # state allocation table. maps line and interface indices to self.state memory locations + + self.sat = np.zeros((len(circuit.lines) + 2 + 2 * len(self.interface), 2), dtype='int') + self.sat[:, 0] = -1 + filled = 0 + for lidx, cap in enumerate(wavecaps): + self.sat[lidx] = filled, cap + filled += cap + + self.zero_idx = len(circuit.lines) + self.sat[self.zero_idx] = filled, intf_wavecap + filled += intf_wavecap + self.tmp_idx = self.zero_idx + 1 + self.sat[self.tmp_idx] = filled, intf_wavecap + filled += intf_wavecap + + self.ppi_offset = self.tmp_idx + 1 + self.ppo_offset = self.ppi_offset + len(self.interface) + for i, n in enumerate(self.interface): + if len(n.outs) > 0: + self.sat[self.ppi_offset + i] = filled, intf_wavecap + filled += intf_wavecap + if len(n.ins) > 0: + self.sat[self.ppo_offset + i] = self.sat[n.ins[0].index] + + # pad timing + self.timing = np.zeros((len(self.sat), 2, 2)) + self.timing[:len(timing)] = timing + + # allocate self.state + self.state = np.zeros((filled, sims), dtype='float32') + TMAX + + # generate self.ops + ops = [] + interface_dict = dict([(n, i) for i, n in enumerate(self.interface)]) + for n in circuit.topological_order(): + if n in interface_dict: + inp_idx = self.ppi_offset + interface_dict[n] + if len(n.outs) > 0 and n.outs[0] is not None: + ops.append((0b1010, n.outs[0].index, inp_idx, self.zero_idx)) + if 'dff' in n.kind.lower(): + if len(n.outs) > 1 and n.outs[1] is not None: + ops.append((0b0101, n.outs[1].index, inp_idx, self.zero_idx)) + else: + for o_line in n.outs[1:]: + if o_line is not None: + ops.append((0b1010, o_line.index, inp_idx, self.zero_idx)) + else: + o0_idx = self.tmp_idx + i0_idx = self.zero_idx + i1_idx = self.zero_idx + if len(n.outs) > 0 and n.outs[0] is not None: + o0_idx = n.outs[0].index + else: + print(f'no outputs for {n}') + if len(n.ins) > 0 and n.ins[0] is not None: i0_idx = n.ins[0].index + if len(n.ins) > 1 and n.ins[1] is not None: i1_idx = n.ins[1].index + kind = n.kind.lower() + if kind == '__fork__': + for o_line in n.outs: + ops.append((0b1010, o_line.index, i0_idx, i1_idx)) + elif kind.startswith('nand'): + ops.append((0b0111, o0_idx, i0_idx, i1_idx)) + elif kind.startswith('nor'): + ops.append((0b0001, o0_idx, i0_idx, i1_idx)) + elif kind.startswith('and'): + ops.append((0b1000, o0_idx, i0_idx, i1_idx)) + elif kind.startswith('or'): + ops.append((0b1110, o0_idx, i0_idx, i1_idx)) + elif kind.startswith('xor'): + ops.append((0b0110, o0_idx, i0_idx, i1_idx)) + elif kind.startswith('xnor'): + ops.append((0b1001, o0_idx, i0_idx, i1_idx)) + elif kind.startswith('not') or kind.startswith('inv'): + ops.append((0b0101, o0_idx, i0_idx, i1_idx)) + elif kind.startswith('buf') or kind.startswith('nbuf'): + ops.append((0b1010, o0_idx, i0_idx, i1_idx)) + elif kind.startswith('__const1__') or kind.startswith('tieh'): + ops.append((0b0101, o0_idx, i0_idx, i1_idx)) + elif kind.startswith('__const0__') or kind.startswith('tiel'): + ops.append((0b1010, o0_idx, i0_idx, i1_idx)) + else: + print('unknown gate type', kind) + self.ops = np.asarray(ops, dtype='int32') + + # generate level data + levels = np.zeros(len(self.sat), dtype='int32') + level_starts = [0] + current_level = 1 + for i, op in enumerate(self.ops): + if levels[op[2]] >= current_level or levels[op[3]] >= current_level: + current_level += 1 + level_starts.append(i) + levels[op[1]] = current_level + self.level_starts = np.asarray(level_starts, dtype='int32') + self.level_stops = np.asarray(level_starts[1:] + [len(self.ops)], dtype='int32') + + m1 = np.array([2 ** x for x in range(7, -1, -1)], dtype='uint8') + m0 = ~m1 + self.mask = np.rollaxis(np.vstack((m0, m1)), 1) + + def get_line_delay(self, line, polarity): + return self.timing[line, 0, polarity] + + def set_line_delay(self, line, polarity, delay): + self.timing[line, 0, polarity] = delay + + def assign(self, vectors, time=0.0, offset=0): + nvectors = min(vectors.nvectors - offset, self.sims) + for i, node in enumerate(self.interface): + ppi_loc = self.sat[self.ppi_offset + i, 0] + if ppi_loc < 0: continue + for p in range(nvectors): + vector = p + offset + a = vectors.bits[i, :, vector // 8] + m = self.mask[vector % 8] + toggle = 0 + if a[0] & m[1]: + self.state[ppi_loc, p] = TMIN + toggle += 1 + if (len(a) > 2) and (a[2] & m[1]) and ((a[0] & m[1]) == (a[1] & m[1])): + self.state[ppi_loc + toggle, p] = time + toggle += 1 + self.state[ppi_loc + toggle, p] = TMAX + + def propagate(self, sims=None, sd=0.0, seed=1): + if sims is None: + sims = self.sims + else: + sims = min(sims, self.sims) + for op_start, op_stop in zip(self.level_starts, self.level_stops): + self.overflows += level_eval(self.ops, op_start, op_stop, self.state, self.sat, 0, sims, + self.timing, sd, seed) + self.lst_eat_valid = False + + def wave(self, line, vector): + if line < 0: + return [TMAX] + mem, wcap = self.sat[line] + if mem < 0: + return [TMAX] + return self.state[mem:mem + wcap, vector] + + def wave_ppi(self, i, vector): + return self.wave(self.ppi_offset + i, vector) + + def wave_ppo(self, o, vector): + return self.wave(self.ppo_offset + o, vector) + + def capture(self, time=TMAX, sd=0, seed=1, probabilities=None, offset=0): + for i, node in enumerate(self.interface): + if len(node.ins) == 0: continue + for p in range(self.sims): + self.cdata[i, p] = self.capture_wave(self.ppo_offset + i, p, time, sd, seed) + if probabilities is not None: + assert offset < probabilities.shape[1] + cap_dim = min(probabilities.shape[1] - offset, self.sims) + probabilities[:, offset:cap_dim + offset] = self.cdata[:, 0:cap_dim, 0] + self.lst_eat_valid = True + return self.cdata + + def reassign(self, time=0.0): + for i, node in enumerate(self.interface): + ppi_loc = self.sat[self.ppi_offset + i] + ppo_loc = self.sat[self.ppo_offset + i] + if ppi_loc < 0 or ppo_loc < 0: continue + for sidx in range(self.sims): + ival = self.val(self.ppi_offset + i, sidx, TMAX) > 0.5 + oval = self.cdata[i, sidx, 1] > 0.5 + toggle = 0 + if ival: + self.state[ppi_loc, sidx] = TMIN + toggle += 1 + if ival != oval: + self.state[ppi_loc + toggle, sidx] = time + toggle += 1 + self.state[ppi_loc + toggle, sidx] = TMAX + + def eat(self, line, vector): + eat = TMAX + for t in self.wave(line, vector): + if t >= TMAX: break + if t <= TMIN: continue + eat = min(eat, t) + return eat + + def lst(self, line, vector): + lst = TMIN + for t in self.wave(line, vector): + if t >= TMAX: break + if t <= TMIN: continue + lst = max(lst, t) + return lst + + def lst_ppo(self, o, vector): + if not self.lst_eat_valid: + self.capture() + return self.cdata[o, vector, 5] + + def toggles(self, line, vector): + tog = 0 + for t in self.wave(line, vector): + if t >= TMAX: break + if t <= TMIN: continue + tog += 1 + return tog + + def _vals(self, idx, vector, times, sd=0.0): + s_sqrt2 = sd * math.sqrt(2) + m = 0.5 + accs = [0.0] * len(times) + values = [0] * len(times) + for t in self.wave(idx, vector): + if t >= TMAX: break + for idx, time in enumerate(times): + if t < time: + values[idx] = values[idx] ^ 1 + m = -m + if t <= TMIN: continue + if s_sqrt2 > 0: + for idx, time in enumerate(times): + accs[idx] += m * (1 + math.erf((t - time) / s_sqrt2)) + if (m < 0) and (s_sqrt2 > 0): + for idx, time in enumerate(times): + accs[idx] += 1 + if s_sqrt2 == 0: + return values + else: + return accs + + def vals(self, line, vector, times, sd=0): + return self._vals(line, vector, times, sd) + + def val(self, line, vector, time=TMAX, sd=0): + return self.capture_wave(line, vector, time, sd)[0] + + def vals_ppo(self, o, vector, times, sd=0): + return self._vals(self.ppo_offset + o, vector, times, sd) + + def val_ppo(self, o, vector, time=TMAX, sd=0): + if not self.lst_eat_valid: + self.capture(time, sd) + return self.cdata[o, vector, 0] + + def capture_wave(self, line, vector, time=TMAX, sd=0.0, seed=1): + s_sqrt2 = sd * math.sqrt(2) + m = 0.5 + acc = 0.0 + eat = TMAX + lst = TMIN + tog = 0 + val = int(0) + final = int(0) + for t in self.wave(line, vector): + if t >= TMAX: break + m = -m + final ^= 1 + if t < time: + val ^= 1 + if t <= TMIN: continue + if s_sqrt2 > 0: + acc += m * (1 + math.erf((t - time) / s_sqrt2)) + eat = min(eat, t) + lst = max(lst, t) + tog += 1 + if s_sqrt2 > 0: + if m < 0: + acc += 1 + if acc >= 0.99: + val = 1 + elif acc > 0.01: + seed = (seed << 4) + (vector << 20) + (line-self.ppo_offset << 1) + seed = int(0xDEECE66D) * seed + 0xB + seed = int(0xDEECE66D) * seed + 0xB + rnd = float((seed >> 8) & 0xffffff) / float(1 << 24) + val = rnd < acc + else: + val = 0 + else: + acc = val + + return acc, val, final, (val != final), eat, lst + + +@numba.njit +def level_eval(ops, op_start, op_stop, state, sat, st_start, st_stop, line_times, sd, seed): + overflows = 0 + for op_idx in range(op_start, op_stop): + op = ops[op_idx] + for st_idx in range(st_start, st_stop): + overflows += wave_eval(op, state, sat, st_idx, line_times, sd, seed) + return overflows + + +@numba.njit +def rand_gauss(seed, sd): + clamp = 0.5 + if sd <= 0.0: + return 1.0 + while True: + x = -6.0 + for i in range(12): + seed = int(0xDEECE66D) * seed + 0xB + x += float((seed >> 8) & 0xffffff) / float(1 << 24) + x *= sd + if abs(x) <= clamp: + break + return x + 1.0 + + +@numba.njit +def wave_eval(op, state, sat, st_idx, line_times, sd=0.0, seed=0): + lut, z_idx, a_idx, b_idx = op + overflows = int(0) + + _seed = (seed << 4) + (z_idx << 20) + (st_idx << 1) + + a_mem = sat[a_idx, 0] + b_mem = sat[b_idx, 0] + z_mem, z_cap = sat[z_idx] + + a_cur = int(0) + b_cur = int(0) + z_cur = lut & 1 + if z_cur == 1: + state[z_mem, st_idx] = TMIN + + a = state[a_mem, st_idx] + line_times[a_idx, 0, z_cur] * rand_gauss(_seed ^ a_mem ^ z_cur, sd) + b = state[b_mem, st_idx] + line_times[b_idx, 0, z_cur] * rand_gauss(_seed ^ b_mem ^ z_cur, sd) + + previous_t = TMIN + + current_t = min(a, b) + inputs = int(0) + + while current_t < TMAX: + z_val = z_cur & 1 + if b < a: + b_cur += 1 + b = state[b_mem + b_cur, st_idx] + b += line_times[b_idx, 0, z_val ^ 1] * rand_gauss(_seed ^ b_mem ^ z_val ^ 1, sd) + thresh = line_times[b_idx, 1, z_val] * rand_gauss(_seed ^ b_mem ^ z_val, sd) + inputs ^= 2 + next_t = b + else: + a_cur += 1 + a = state[a_mem + a_cur, st_idx] + a += line_times[a_idx, 0, z_val ^ 1] * rand_gauss(_seed ^ a_mem ^ z_val ^ 1, sd) + thresh = line_times[a_idx, 1, z_val] * rand_gauss(_seed ^ a_mem ^ z_val, sd) + inputs ^= 1 + next_t = a + + if (z_cur & 1) != ((lut >> inputs) & 1): + # we generate a toggle in z_mem, if: + # ( it is the first toggle in z_mem OR + # following toggle is earlier OR + # pulse is wide enough ) AND enough space in z_mem. + if z_cur == 0 or next_t < current_t or (current_t - previous_t) > thresh: + if z_cur < (z_cap - 1): + state[z_mem + z_cur, st_idx] = current_t + previous_t = current_t + z_cur += 1 + else: + overflows += 1 + previous_t = state[z_mem + z_cur - 1, st_idx] + z_cur -= 1 + else: + z_cur -= 1 + if z_cur > 0: + previous_t = state[z_mem + z_cur - 1, st_idx] + else: + previous_t = TMIN + current_t = min(a, b) + + state[z_mem + z_cur, st_idx] = TMAX + return overflows diff --git a/kyupy/wave_sim_cuda.py b/kyupy/wave_sim_cuda.py new file mode 100644 index 0000000..9e92901 --- /dev/null +++ b/kyupy/wave_sim_cuda.py @@ -0,0 +1,282 @@ +import numpy as np +import math +from .wave_sim import WaveSim +from . import cuda + +TMAX = np.float32(2 ** 127) # almost np.PINF for 32-bit floating point values +TMIN = np.float32(-2 ** 127) # almost np.NINF for 32-bit floating point values + + +class WaveSimCuda(WaveSim): + def __init__(self, circuit, timing, sims=8, wavecaps=16): + super().__init__(circuit, timing, sims, wavecaps) + + self.tdata = np.zeros((len(self.interface), 3, (sims - 1) // 8 + 1), dtype='uint8') + + self.d_state = cuda.to_device(self.state) + self.d_sat = cuda.to_device(self.sat) + self.d_ops = cuda.to_device(self.ops) + self.d_timing = cuda.to_device(self.timing) + self.d_tdata = cuda.to_device(self.tdata) + self.d_cdata = cuda.to_device(self.cdata) + + self._block_dim = (32, 16) + + def get_line_delay(self, line, polarity): + return self.d_timing[line, 0, polarity] + + def set_line_delay(self, line, polarity, delay): + self.d_timing[line, 0, polarity] = delay + + def assign(self, vectors, time=0.0, offset=0): + assert (offset % 8) == 0 + byte_offset = offset // 8 + assert byte_offset < vectors.bits.shape[-1] + pdim = min(vectors.bits.shape[-1] - byte_offset, self.tdata.shape[-1]) + + self.tdata[..., 0:pdim] = vectors.bits[..., byte_offset:pdim + byte_offset] + if vectors.vdim == 1: + self.tdata[:, 1, 0:pdim] = ~self.tdata[:, 1, 0:pdim] + self.tdata[:, 2, 0:pdim] = 0 + cuda.to_device(self.tdata, to=self.d_tdata) + + grid_dim = self._grid_dim(self.sims, len(self.interface)) + assign_kernel[grid_dim, self._block_dim](self.d_state, self.d_sat, self.ppi_offset, + len(self.interface), self.d_tdata, time) + + def _grid_dim(self, x, y): + gx = math.ceil(x / self._block_dim[0]) + gy = math.ceil(y / self._block_dim[1]) + return gx, gy + + def propagate(self, sims=None, sd=0.0, seed=1): + if sims is None: + sims = self.sims + else: + sims = min(sims, self.sims) + for op_start, op_stop in zip(self.level_starts, self.level_stops): + grid_dim = self._grid_dim(sims, op_stop - op_start) + wave_kernel[grid_dim, self._block_dim](self.d_ops, op_start, op_stop, self.d_state, self.sat, int(0), + sims, self.d_timing, sd, seed) + cuda.synchronize() + self.lst_eat_valid = False + + def wave(self, line, vector): + if line < 0: + return None + mem, wcap = self.sat[line] + if mem < 0: + return None + return self.d_state[mem:mem + wcap, vector] + + def capture(self, time=TMAX, sd=0, seed=1, probabilities=None, offset=0): + grid_dim = self._grid_dim(self.sims, len(self.interface)) + capture_kernel[grid_dim, self._block_dim](self.d_state, self.d_sat, self.ppo_offset, + self.d_cdata, time, sd * math.sqrt(2), seed) + self.cdata[...] = self.d_cdata + if probabilities is not None: + assert offset < probabilities.shape[1] + cap_dim = min(probabilities.shape[1] - offset, self.sims) + probabilities[:, offset:cap_dim + offset] = self.cdata[:, 0:cap_dim, 0] + self.lst_eat_valid = True + return self.cdata + + def reassign(self, time=0.0): + grid_dim = self._grid_dim(self.sims, len(self.interface)) + reassign_kernel[grid_dim, self._block_dim](self.d_state, self.d_sat, self.ppi_offset, self.ppo_offset, + self.d_cdata, time) + cuda.synchronize() + + +@cuda.jit() +def reassign_kernel(state, sat, ppi_offset, ppo_offset, cdata, ppi_time): + vector, y = cuda.grid(2) + if vector >= state.shape[-1]: return + if ppo_offset + y >= len(sat): return + + ppo, ppo_cap = sat[ppo_offset + y] + ppi, ppi_cap = sat[ppi_offset + y] + if ppo < 0: return + if ppi < 0: return + + ppo_val = int(cdata[y, vector, 1]) + ppi_val = int(0) + for tidx in range(ppi_cap): + t = state[ppi + tidx, vector] + if t >= TMAX: break + ppi_val ^= 1 + + # make new waveform at PPI + toggle = 0 + if ppi_val: + state[ppi + toggle, vector] = TMIN + toggle += 1 + if ppi_val != ppo_val: + state[ppi + toggle, vector] = ppi_time + toggle += 1 + state[ppi + toggle, vector] = TMAX + + +@cuda.jit() +def capture_kernel(state, sat, ppo_offset, cdata, time, s_sqrt2, seed): + x, y = cuda.grid(2) + if ppo_offset + y >= len(sat): return + line, tdim = sat[ppo_offset + y] + if line < 0: return + if x >= state.shape[-1]: return + vector = x + m = 0.5 + acc = 0.0 + eat = TMAX + lst = TMIN + tog = 0 + val = int(0) + final = int(0) + for tidx in range(tdim): + t = state[line + tidx, vector] + if t >= TMAX: break + m = -m + final ^= 1 + if t < time: + val ^= 1 + if t <= TMIN: continue + if s_sqrt2 > 0: + acc += m * (1 + math.erf((t - time) / s_sqrt2)) + eat = min(eat, t) + lst = max(lst, t) + tog += 1 + if s_sqrt2 > 0: + if m < 0: + acc += 1 + if acc >= 0.99: + val = 1 + elif acc > 0.01: + seed = (seed << 4) + (vector << 20) + (y << 1) + seed = int(0xDEECE66D) * seed + 0xB + seed = int(0xDEECE66D) * seed + 0xB + rnd = float((seed >> 8) & 0xffffff) / float(1 << 24) + val = rnd < acc + else: + val = 0 + else: + acc = val + + cdata[y, vector, 0] = acc + cdata[y, vector, 1] = val + cdata[y, vector, 2] = final + cdata[y, vector, 3] = (val != final) + cdata[y, vector, 4] = eat + cdata[y, vector, 5] = lst + + +@cuda.jit() +def assign_kernel(state, sat, ppi_offset, intf_len, tdata, time): + x, y = cuda.grid(2) + if y >= intf_len: return + line = sat[ppi_offset + y, 0] + if line < 0: return + sdim = state.shape[-1] + if x >= sdim: return + vector = x + a0 = tdata[y, 0, vector // 8] + a1 = tdata[y, 1, vector // 8] + a2 = tdata[y, 2, vector // 8] + m = np.uint8(1 << (7 - (vector % 8))) + toggle = 0 + if a0 & m: + state[line + toggle, x] = TMIN + toggle += 1 + if (a2 & m) and ((a0 & m) == (a1 & m)): + state[line + toggle, x] = time + toggle += 1 + state[line + toggle, x] = TMAX + + +@cuda.jit(device=True) +def rand_gauss(seed, sd): + clamp = 0.5 + if sd <= 0.0: + return 1.0 + while True: + x = -6.0 + for i in range(12): + seed = int(0xDEECE66D) * seed + 0xB + x += float((seed >> 8) & 0xffffff) / float(1 << 24) + x *= sd + if abs(x) <= clamp: + break + return x + 1.0 + + +@cuda.jit() +def wave_kernel(ops, op_start, op_stop, state, sat, st_start, st_stop, line_times, sd, seed): + x, y = cuda.grid(2) + st_idx = st_start + x + op_idx = op_start + y + if st_idx >= st_stop: return + if op_idx >= op_stop: return + lut = ops[op_idx, 0] + z_idx = ops[op_idx, 1] + a_idx = ops[op_idx, 2] + b_idx = ops[op_idx, 3] + + z_mem, z_cap = sat[z_idx] + a_mem = sat[a_idx, 0] + b_mem = sat[b_idx, 0] + + _seed = (seed << 4) + (z_idx << 20) + (st_idx << 1) + + a_cur = int(0) + b_cur = int(0) + z_cur = lut & 1 + if z_cur == 1: + state[z_mem, st_idx] = TMIN + + a = state[a_mem, st_idx] + line_times[a_idx, 0, z_cur] * rand_gauss(_seed ^ a_mem ^ z_cur, sd) + b = state[b_mem, st_idx] + line_times[b_idx, 0, z_cur] * rand_gauss(_seed ^ b_mem ^ z_cur, sd) + + previous_t = TMIN + + current_t = min(a, b) + inputs = int(0) + + while current_t < TMAX: + z_val = z_cur & 1 + if b < a: + b_cur += 1 + b = state[b_mem + b_cur, st_idx] + b += line_times[b_idx, 0, z_val ^ 1] * rand_gauss(_seed ^ b_mem ^ z_val ^ 1, sd) + thresh = line_times[b_idx, 1, z_val] * rand_gauss(_seed ^ b_mem ^ z_val, sd) + inputs ^= 2 + next_t = b + else: + a_cur += 1 + a = state[a_mem + a_cur, st_idx] + a += line_times[a_idx, 0, z_val ^ 1] * rand_gauss(_seed ^ a_mem ^ z_val ^ 1, sd) + thresh = line_times[a_idx, 1, z_val] * rand_gauss(_seed ^ a_mem ^ z_val, sd) + inputs ^= 1 + next_t = a + + if (z_cur & 1) != ((lut >> inputs) & 1): + # we generate a toggle in z_mem, if: + # ( it is the first toggle in z_mem OR + # following toggle is earlier OR + # pulse is wide enough ) AND enough space in z_mem. + if z_cur == 0 or next_t < current_t or (current_t - previous_t) > thresh: + if z_cur < (z_cap - 1): + state[z_mem + z_cur, st_idx] = current_t + previous_t = current_t + z_cur += 1 + else: + # overflows += 1 + previous_t = state[z_mem + z_cur - 1, st_idx] + z_cur -= 1 + else: + z_cur -= 1 + if z_cur > 0: + previous_t = state[z_mem + z_cur - 1, st_idx] + else: + previous_t = TMIN + current_t = min(a, b) + + state[z_mem + z_cur, st_idx] = TMAX diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/b01.bench b/tests/b01.bench new file mode 100644 index 0000000..48ae6ca --- /dev/null +++ b/tests/b01.bench @@ -0,0 +1,64 @@ +# edf2bench v0.8 +# (!) 1997-2003 Giovanni Squillero +# +# Edf source: "b01/b01.edf" +# 2 inputs +# 2 outputs +# 5 D-type flipflops +# 10 inverters +# 39 gates (1 and, 28 nand, 1 or, 10 not) + + +INPUT(LINE1) +INPUT(LINE2) + +OUTPUT(OUTP_REG) +OUTPUT(OVERFLW_REG) + +OVERFLW_REG = DFF(U34) +STATO_REG_2_ = DFF(U45) +STATO_REG_1_ = DFF(U36) +STATO_REG_0_ = DFF(U35) +OUTP_REG = DFF(U44) + +U34 = AND(STATO_REG_1_, U38, STATO_REG_0_) +U35 = NAND(U68, U67, U66, U65) +U36 = NAND(U57, U55, U56) +U37 = OR(LINE2, LINE1) +U38 = NOT(STATO_REG_2_) +U39 = NOT(STATO_REG_1_) +U40 = NOT(LINE2) +U41 = NOT(LINE1) +U42 = NOT(STATO_REG_0_) +U43 = NAND(STATO_REG_1_, U42) +U44 = NAND(U73, U72) +U45 = NAND(U60, U59) +U46 = NAND(U70, U69) +U47 = NAND(LINE1, LINE2) +U48 = NAND(STATO_REG_2_, U43) +U49 = NOT(U37) +U50 = NAND(U49, U42) +U51 = NOT(U47) +U52 = NOT(U43) +U53 = NAND(U47, U43) +U54 = NAND(STATO_REG_2_, U47) +U55 = NAND(STATO_REG_0_, U39, U47) +U56 = NAND(U52, U54) +U57 = NAND(U62, U61, STATO_REG_2_) +U58 = NOT(U48) +U59 = NAND(U53, U38) +U60 = NAND(U50, U39, STATO_REG_2_) +U61 = NAND(STATO_REG_1_, U49) +U62 = NAND(U37, U42) +U63 = NAND(STATO_REG_0_, U47) +U64 = NAND(U51, U42) +U65 = NAND(U64, U63, U39, U38) +U66 = NAND(U43, U37, STATO_REG_2_) +U67 = NAND(U34, U47) +U68 = NAND(U51, U52) +U69 = NAND(LINE1, U40) +U70 = NAND(LINE2, U41) +U71 = NOT(U46) +U72 = NAND(U58, U71) +U73 = NAND(U46, U48) + diff --git a/tests/b01.v b/tests/b01.v new file mode 100644 index 0000000..aa809ad --- /dev/null +++ b/tests/b01.v @@ -0,0 +1,96 @@ +// +// Milkyway Hierarchical Verilog Dump: +// Generated on 04/25/2017 at 20:29:24 +// Design Generated by Consolidated Verilog Reader +// File produced by Consolidated Verilog Writer +// Library Name :lib_mw +// Cell Name :b01 +// Hierarchy delimiter:'/' +// Write Command : write_verilog b01.v -no_physical_only_cells -no_corner_pad_cells +// -no_pad_filler_cells +// + + +module b01 (line1 , Scan_Out , overflw , outp , Scan_In , Scan_Enable , + clock , reset , line2 ); +input line1 ; +output Scan_Out ; +output overflw ; +output outp ; +input Scan_In ; +input Scan_Enable ; +input clock ; +input reset ; +input line2 ; + + + +assign Scan_Out = overflw ; +SDFFARX1 stato_reg_1_0 (.QN ( n137 ) , .Q ( stato_1_N ) , .CLK ( clock ) + , .RSTB ( n86 ) , .SE ( Scan_Enable ) , .SI ( stato_0_N ) , .D ( n53 ) ) ; +INVX0 U1 (.ZN ( n1 ) , .INP ( n105 ) ) ; +SDFFARX1 outp_reg (.Q ( outp ) , .CLK ( clock ) , .RSTB ( n86 ) + , .SE ( Scan_Enable ) , .SI ( Scan_In ) , .D ( n54 ) ) ; +SDFFARX1 stato_reg_2_0 (.QN ( n148 ) , .Q ( stato_2_N ) , .CLK ( clock ) + , .RSTB ( n86 ) , .SE ( Scan_Enable ) , .SI ( stato_1_N ) , .D ( n55 ) ) ; +SDFFARX1 stato_reg_0_0 (.QN ( n149 ) , .Q ( stato_0_N ) , .CLK ( clock ) + , .RSTB ( n86 ) , .SE ( Scan_Enable ) , .SI ( outp ) , .D ( n56 ) ) ; +SDFFARX1 overflw_reg (.Q ( overflw ) , .CLK ( clock ) , .RSTB ( n86 ) + , .SE ( Scan_Enable ) , .SI ( stato_2_N ) , .D ( n61 ) ) ; +AND2X1 U108 (.IN1 ( n1 ) , .IN2 ( stato_0_N ) , .Q ( n133 ) ) ; +AND2X1 U109 (.IN1 ( n142 ) , .IN2 ( n136 ) , .Q ( n100 ) ) ; +NAND2X0 U110 (.IN1 ( n129 ) , .IN2 ( n128 ) , .QN ( n131 ) ) ; +NAND2X0 U111 (.IN1 ( n144 ) , .IN2 ( n132 ) , .QN ( n92 ) ) ; +NOR2X0 U112 (.QN ( n132 ) , .IN1 ( n133 ) , .IN2 ( n147 ) ) ; +OR2X1 U113 (.IN2 ( n1 ) , .IN1 ( n96 ) , .Q ( n144 ) ) ; +NAND2X0 U114 (.IN1 ( line1 ) , .IN2 ( n134 ) , .QN ( n128 ) ) ; +INVX0 U115 (.ZN ( n134 ) , .INP ( line2 ) ) ; +AND2X1 U116 (.IN1 ( n135 ) , .IN2 ( n148 ) , .Q ( n61 ) ) ; +NOR2X0 U117 (.QN ( n135 ) , .IN1 ( n149 ) , .IN2 ( n137 ) ) ; +NOR2X0 U118 (.QN ( n136 ) , .IN1 ( n137 ) , .IN2 ( n149 ) ) ; +NAND2X0 U119 (.IN1 ( n92 ) , .IN2 ( n137 ) , .QN ( n91 ) ) ; +AND2X1 U120 (.IN1 ( stato_2_N ) , .IN2 ( n131 ) , .Q ( n147 ) ) ; +NAND2X1 U121 (.IN2 ( n148 ) , .IN1 ( n109 ) , .QN ( n108 ) ) ; +NOR2X0 U122 (.QN ( n130 ) , .IN1 ( n1 ) , .IN2 ( n148 ) ) ; +NOR2X0 U123 (.QN ( n97 ) , .IN1 ( n104 ) , .IN2 ( n105 ) ) ; +AND2X1 U124 (.IN1 ( n106 ) , .IN2 ( n148 ) , .Q ( n104 ) ) ; +INVX0 U125 (.ZN ( n86 ) , .INP ( reset ) ) ; +NAND2X1 U127 (.IN2 ( n115 ) , .IN1 ( n114 ) , .QN ( n54 ) ) ; +NAND2X0 U128 (.IN1 ( stato_1_N ) , .IN2 ( n149 ) , .QN ( n140 ) ) ; +NAND2X0 U130 (.IN1 ( n129 ) , .IN2 ( n128 ) , .QN ( n142 ) ) ; +NAND2X0 U131 (.IN1 ( n129 ) , .IN2 ( n128 ) , .QN ( n103 ) ) ; +NAND2X0 U134 (.IN1 ( line2 ) , .IN2 ( line1 ) , .QN ( n105 ) ) ; +NAND2X0 U135 (.IN1 ( line2 ) , .IN2 ( n84 ) , .QN ( n129 ) ) ; +INVX0 U136 (.ZN ( n84 ) , .INP ( line1 ) ) ; +NAND2X0 U137 (.IN1 ( stato_1_N ) , .IN2 ( n149 ) , .QN ( n106 ) ) ; +NAND2X0 U138 (.IN1 ( n149 ) , .IN2 ( n148 ) , .QN ( n96 ) ) ; +NOR2X0 U139 (.QN ( n125 ) , .IN1 ( stato_1_N ) , .IN2 ( n1 ) ) ; +NAND2X0 U140 (.IN1 ( n105 ) , .IN2 ( n140 ) , .QN ( n109 ) ) ; +NOR2X0 U141 (.QN ( n122 ) , .IN1 ( n130 ) , .IN2 ( n140 ) ) ; +NOR2X0 U142 (.QN ( n114 ) , .IN1 ( n117 ) , .IN2 ( n118 ) ) ; +NAND2X0 U143 (.IN1 ( n117 ) , .IN2 ( n105 ) , .QN ( n120 ) ) ; +NAND2X0 U144 (.IN1 ( n107 ) , .IN2 ( n108 ) , .QN ( n55 ) ) ; +NAND2X0 U145 (.IN1 ( n120 ) , .IN2 ( n119 ) , .QN ( n53 ) ) ; +NAND2X0 U146 (.IN1 ( n91 ) , .IN2 ( n90 ) , .QN ( n56 ) ) ; +NAND2X0 U147 (.IN1 ( n110 ) , .IN2 ( n137 ) , .QN ( n107 ) ) ; +NOR2X0 U148 (.QN ( n119 ) , .IN1 ( n123 ) , .IN2 ( n122 ) ) ; +NOR2X0 U149 (.QN ( n90 ) , .IN1 ( n98 ) , .IN2 ( n97 ) ) ; +INVX0 U150 (.ZN ( n145 ) , .INP ( n112 ) ) ; +NAND2X0 U151 (.IN1 ( n105 ) , .IN2 ( n146 ) , .QN ( n110 ) ) ; +NOR2X0 U152 (.QN ( n146 ) , .IN1 ( n147 ) , .IN2 ( n145 ) ) ; +NOR2X0 U153 (.QN ( n123 ) , .IN1 ( n124 ) , .IN2 ( n149 ) ) ; +NOR2X0 U154 (.QN ( n98 ) , .IN1 ( n99 ) , .IN2 ( n1 ) ) ; +NOR2X0 U155 (.QN ( n124 ) , .IN1 ( n126 ) , .IN2 ( n125 ) ) ; +NOR2X0 U156 (.QN ( n99 ) , .IN1 ( n100 ) , .IN2 ( n61 ) ) ; +NAND2X0 U157 (.IN1 ( stato_2_N ) , .IN2 ( n140 ) , .QN ( n116 ) ) ; +NAND2X0 U158 (.IN1 ( stato_2_N ) , .IN2 ( stato_0_N ) , .QN ( n112 ) ) ; +NAND2X0 U159 (.IN1 ( n137 ) , .IN2 ( stato_2_N ) , .QN ( n121 ) ) ; +NAND2X0 U160 (.IN1 ( stato_2_N ) , .IN2 ( n1 ) , .QN ( n127 ) ) ; +NAND2X0 U161 (.IN1 ( n142 ) , .IN2 ( n116 ) , .QN ( n115 ) ) ; +NOR2X0 U162 (.QN ( n118 ) , .IN1 ( n131 ) , .IN2 ( n112 ) ) ; +NOR2X0 U163 (.QN ( n117 ) , .IN1 ( n121 ) , .IN2 ( n142 ) ) ; +NAND2X0 U164 (.IN1 ( n127 ) , .IN2 ( n113 ) , .QN ( n126 ) ) ; +NAND2X0 U165 (.IN1 ( stato_2_N ) , .IN2 ( n103 ) , .QN ( n113 ) ) ; +endmodule + + diff --git a/tests/b14.sdf.gz b/tests/b14.sdf.gz new file mode 100644 index 0000000000000000000000000000000000000000..c0d6c7b76319e0d55b2ee265be09f8d1db1aea91 GIT binary patch literal 310725 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

*=Ktj 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 z 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

6vPi90w6FJBH=N93@{pKFQis1KYGU5Si`C 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

Yl*Hq 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�lnGWYxtnJbxzJIo*m*fIrz zi$_bK9dFjdVqv;oAmcZgvVujhXWlHI8@kmYhG-{>xQ}zmt#=QRg@KHl@(Nn>&z{86 zToejyzY7v;_2FN6F7BWSNw2em9lOA$l8fJEvziH5@jzGLU+C$42_8BN(?D&63~{(U zCkaUZYsvQ!cR1M#vvYAbgXaRkZ1+meK}SUiiB6phyr=3k<*!92YWCN=(WzqTmVpq_ zAhqmzEZ6tIT6uNyru<#pED(bP(t|iZ!=~7{O5x8VQRJQKIhZ>}o} z=!)lNUAi}hOqbj~_2j;#u*t*!@M~mgY(qD#>tlKpDF_Om3?|D`Eh|}^iMP@%S&>;F z?H?nTm;6aw^|`DT#DD~akzEU4&cLa>yxi;$JWWnMOf0!A)9=~O z;&vp_iE0_R0JuqrlS{y(q(`4s2`ES*Vz5fZ0e z)g9?Lw}8CvZ`09`Ww^~%MJ(e(oQ^|8*7aHZ`tjTK)snDDYp&(bk`c7^vW%1t7Psm; z;iyU|5~l}mz+jO_Z0b9jGIC`Wb9>%Hn-F{U$UV`mrNHf`NlS^DJO#MFOGvcgpobGU}#%;3^m#tkr&ZU%s z_sCh7Q$<9y!7_D7#a3%spJ&2qj5vPVjK^MD?9>p@L;_3_4oOWobnIGh^oQEl$uf+I z3k#}j;2v=v?#HvM=H?~ zjMX5uH)al{5yOGv)j_;}OWw|Q5S+bbYohFFeMaP=*{vEic6O0k@>*;c%hucZn!L^J zn(Q|0O0z{#cRrFEZoI-E4;W#VNguAJy7Q5|?d^F*!OYrdIeCBK;_Pn`lo_mAXlP**_d#jOF=Z8bt z+%y|&?$GM&w7LS-psBYJKz}Y8ShU-iEYui#Kb+fov)pbvir90|6?MEH$t}l2`Y6=h zxt8!TeLJqamb}&*#iMt90E<9$zc_Np&#YPJTXI`(%1GHf>Xr#L-N~-=q1-?zb}CxY z9@IYNZO!?tL=0a$6^>w5EatH;Em8dLey|id{}kjES4M3(Q3T~!eoeyctcp|neEeM| zvpFT={EO|6&o#^-aj%Wen9pMNMc*E%)-rm#o(MCIa0DrwwPe)!NbXYyNcfTCw|HeM zxU%z+yr+)VRSo|xCB`gxy7`g3rw;R$=b;y6G!yce=0|d$I%Fp|sYGfuRAaU7AIW{{ z;9)EzkY{r>2IKyb{0)G%wH59tcmpkhtktQi2DP1Q3C#>ABMuS=NEsk~(CbuHgVWx2 zX}&sDWRSG|8EcgiP6tiD(!%FYkxw%%+`G>0pW)p|r>F?m0E=vrc;0E;}u=6jYd z!|`dGOjb*`5gILe|41h85WU5YJf&Md~Gh9;*k0HT%2lle%)0OgeePigRJB z4@|4Za!A+VU#&FpIg{$HvnYECmXu;$P{>n=S+iMm7Y~$m!D0%mBw&Xr@w8T(9E2gc zz`>pzfJL_?aRZv>lG}gP`Tf+y=g1>wU^~FB%bkBgS$Cu4eIiNN zG!ZW>isbLME(Um(r9Lb+k7ys6q%iSNCv=Hkv$@o+Wfi}WauoM#MSj2VYvcJSAh=i(=F$~Ycy1fL~1bEIeZruE>%;;G_R z+9rBj6V6!iwlA!>S+FsTfG}xdY#i4#5$~Cjp`=P1D2r!`+{)<~ZktnRq{Do9&lGV_ z5`6+TwdfO;Cc;mK&u2d-uoDwlN-6XQ%U5C)a)XjC&z1^v%~iMh~G_hhP^~n@0AQ!Nt<}1 zXcIgLj&7VUn5nq8hjg=&L7rIU~)d`4l?@lt% z>{jsxD73)Fm=44tVth)C#=uN1J5_sL<%u-*0>&(d@B`nyaixhQO|F>8mT}qIHj1~f zsv?kSI^t<6Lq(#jO&~%IYbu7p?Y$S2^dgz%Q|?-1zsb zihYy!ALcFo1fAK_z$CjM@qVz7GQ&gvW)Wh z_ms!7XQTMFv@F6Vp36;&*my0bl!CZ8@e*22mEG&!BS(T{`=J?Y=19KBnUYMB1(_kF zymf&=I7t&P9Uo=)6TAX5VK6Q{6CPd3oZNwz9lw04?0&GFg`?qlM&s_5UCB&y0IM_A zc%70bxwp|Ho+!UKq_kzKjMs8){8#P*8|2)~qg0vR{XNk*mrXN4R&vE{PTxpkfAj=c zm*t}Z0#?z4Ps>CP=V+Pia06Nc!S{UpNaX42Oz}5M8Bi`!TmIb1XIJmB=Y9cnv}4D# z(V(5x7UV`i@%xedJ%*Xy=cL`g$vC_p$s5<8@x>|!Qe*jsfe?lScED6>S?X}6`OD~j zcW}csr;rNlD=?LSPw>V!K%1O3d2j*i`(*FsuDw+lCbX$zsDgEHqBo4i&qIn{<6BT! z(Q-~b&8A4U;i<&PY&J-POc>$auTcBgFcwqga%$NZkyo{C-OSacnD=IeU!z)AQEXjL z`f|IO{WTTzyv8iA(@vdMj1Tcj!h=E`PK<2<8Fj3h$JF=M8ix3eFB4S=3Wi+LfX_mAZ6!~~wp2tO-(ix1jR-j&Y6T98j0MvmB8 z^3mS}@Ba&BX}7%j5L_2=R%kCM!0k~hYxPG zEZdz9{OT7G%WxW!C+SfDgGrtkFRKVb1)KNUOn=RA&8el}p`Mji031>o0HocKgs*Oi zzu!FG!eNkeDaa}b#5{0Uh!qWMaq}#)?-sH73mg1{7=}gO$5KPg`fvjHnPwA?q&NV6 za<*|UG1Ll>A2zVj9wL+8RZM>JK*jg$<32PekH5VYNY~uZKk)Rhq&-`DB*B1 z<@h~LJZ3@?ICJn)S>cdIlV|gxqG`7uTVRu(ju9L>VWb23^tk2dJ z`|PXb-&27CLo$X){~7L2OoVB|gcDznr72dXCXaSJ*E|xq@V=F`Vm8i5aW15|F%CI)c~!>LXwzA=PN^8(ZeZ1ESM3dy=BG$Q3y%+&yt>^E^Ye^O4s zgl9Z(v_HJ;cfngjeNZ*B#ui61I~R9G@W@axCp6}zxo9_#forjANV`lr=2Fcw{I+3m z2Mkw1!a-1WxZskRCRoCRsyj-G=D3=lc(jFnrCq|?MkN|>xU!NfCB=>81U_heR9rf; z-K55fB0+Lz{Py;X-wIgmCdkvCk1Q8ta5X`O-ykYBU@T`?<)#xGir*04R->wK)_SX+ zka2xkw^wjmIheJqM^Q2*@mpHVX*GTFJ5GXoX%#tutHw&XQ+q)L+&~inqV*ov*?sFh zu93ieSJ0v~=80D<&SlKdrOc$*!Pw(QRdX)9@$SL^LFBqp5o3NE#`0VS)}k?fi%e{N zWOlP%+{YX@g$Z7>5?Z-62CRiG-eL<`5!j}=xJeGQ+HYL-N}(qn^alB_&G`1XcPC0@ zF5a+1sq1!(JRfo_Be}HyX3i138~LrCP`o@9Z=(w}C1;GLssiQm;*rg=iydc_ZH85KZh@ugkrv8d;HjBO!Szc@ggax<%+nON`c*E z^04=!;AHV)FtQNby~)Aj_3y^z!awKauP)lJYTn+_I=G4>juV&4Wl;(_D0*zL6acwE zT4(Li+MN7K=j=+2=^nV&@7mkq#bxiMZ(L1KU*7UgWi;h8iZeL+95>Qcax2+_oh2aWtx!ZK7JBPfFB4SRB9tPbNcAEf!Ti9X!^DOi;=2VwM4@f2*A06c8+B8T{0~Y}B*b8;CZvg4Uj8@N%@w zI~2!9jBw|uHGW_$dxFS^a*T7Na4&24Gs+%E14j!GI3RhOO{UY`=>x*AYKN^)9wajM8M>a3)3dPk2SPO!ql`7i+`@Y$*U3xI zqInuUR&n4V9Sx{y8N$XH7%Xbi)ZTF>_;Iz2GE9RR5Ef?@>fuaatTDt<#t+~!n%oNV z*`oSlc|OW>S&h++t0nzi&y$}IgjH6K+$y&Ju9zyBEjJb%VxYd2mZQUddC;qI2e*YU zk*4#p5|~8bcsJO1T7ho1UvB6s15Wi5Q1Ae>R(lCc`+l)_b9@utLl_O3E(j+}2S#cUCGH^Nh=C--GQ=44w zCeuo(x*HMrnB?GO@W8zxV}_f~w+0z_YM1M{3?Ma!f&WodyQi#T3wO&>6Jm|}l_KancN56lwt=c+S^eoYyaL>SfdHzhyN zFCcI8MN$5nBx6PUl}(+K2BbQ@(fHTX`| zbPK7D*oqOwSp4Y(@N`5xe$oVHSPV{ugr_zapE;?S4Zt}N;!O*k^}Q=Y;3iE75{WJn z(Jw@FEfT%05|6GotQ?EHhgD*Ol^KFnPRuQE?3#=BRA5=#mbzuZ2ibk$27o~Pr#L8q z5mPwuRt}6EsoLG?LTQgIN6bV#4*K7Dw-)Xa%Jm0EdSBA`HE`@W-gYmz76d{h+hk%7 zjm-2Cvs(qHp!|iT6I$$2(&OH?>;2Ly$aARlX_SAh5WYaRE$)b-VRk4^l@7SW&%d>r zV;RS{1y>ZOk_a-zQ-OwUHBu+{Sq`_f3TY1(jC7zRjNpbTyXZ{VoGTGaY|q@=6is%-c|v7yEX@XW{2dK#d=X%P!)dcs<~xfGr<=D>JAyT1#>gxPV0;`O5-66| z8o2Tk#`nB){^p;tH+P_wHs-*iCbZr4mbTGcR-M+!T)u zlI$DGfApW%H<8~qL{<|8zFQEHuD8WHmbNhVzhgJ(Tzv1O(U<~?Puv-)&>|*jE0Vo7 z##@U(k;i%(SlcU_i^{ZYpf=e!vb3}s1Kb!Xy{F@LXbB!LJqooa^qfi90JMe-ns9j(g{c&qO>H0nCfR|%(h8rq7Xl6g&9MB;2ltfFpbL>3OJQKW;<0SxoONn|Zz=G^A`<%yc$SQ|8vk18px($I(6ZjzW`$ zc7sce88<#%{{ z*c^sYm2fqi(rH#C0o{%c4rrvz` za@F}AUEo~W+FcB%EBJzkocQ$niQEi=1k%{T?hh!AydTLCVHr%TF->GrvO;XlkK{Js z6!tKXyF~A@doejoI1Xu$Yubt_j%*~BYjhB9*}o3ItReEQri+tuVR&0NUN}ooaYM$DMK6Eb=^lD~%;BSz%SfxJ@PFHt^+`nV*$umgI!sL@u*)Vx;F@fIH z(Lasz=wY&f1CvoBf$wm>@KWqc^-Y8HrYBu5S6u-3j14q47FQYn_DnRNIpxSETTRke zDzA@T8k_k5m-UX3$raeor{oHa?v62D?;vrhasCR0+_9R*MiD+FZ8Aig*-qU|qZ|%H zEi1yWKFoS+%wfn({N+N}WvI99kzu@T#5DczrptvEUdxXi`@{|8MVgoJ1y+@jAwDIa zi{>=lPJGi??Mt1-oLIAnoOm(CU0sUyzUl0b zk}M}50e-VWD^+_wYrDLN8uEE4P9MLC*T=kXS^9y1(U=2N38s)Iuk5nR&clncBnVow zRLBWekvK1Md@d4NE(|S$WGLP&ejWSW4GdrhfuUw35EKm_H>eF}4vpDMKe=K4)(hbNaw4vfUYDJ5uwN1@zftcqo8H99loB<5^*iP8CO@6v?Ti z*gg>t9nm|nlgO!{t19V_%}fNjz_@dXQ&<7{Xii?qOx)Hun;S%xPQm9crf}fH zqj>3vK)7SE6I>kH@K*XLiAHx6y>t_Yj@4{LX)nTp@mqY*R3{g1mWZD{V!AF7I2EVz zXZc_NEuTd+=U~7s4!WCD=s@bwK*a&j-C$pC5+xS6g*X^^vu;A^(Mw;W#3%+$0&vO` z;~qt}WY+Bm(r(N)jaHxY8u3{+fhx% zlkgOrG@metfEe2pRA#3Tb71OgOq;oTN}3HaP%m;nX<-)@mmx`+(G%{21v_7O&PvwI{c!~ z;-QUsXFHO#4O13q@VX&eflNf)WUPn{q)@88uk7+_(2PS>9-)Hr`;Vwo zbRuqEccx@Nikl0A_Quc>(VA&IR6ZVY>KM5NI&*46+N1JnsWsd5a`Gi3BZJV|;xDh8 z9(~?ca&BSM6vp#|Y?aGP-pbl4G!75J0kBPuZ zW16g}H3%Qz#>qxI_{sK%bu(o4ZIf~Lx3)tvC!s<{?DHr(nrI0i9iPl}BSCaEkk>fN`DgPxDfT|;)td^f& z9|Vq=W=dgJkz9IYxaP{VdSY&_*2` z-^2!Ee9EO+oC?X~b$#}}<7%L=b|-*?!p4=*kUooh-OuE0BMWxjA#?`1L17Es&*W_* zrmi+3ZiZHr=~nD$pJ}T`;hv_AQb&fT3Pl5lX}fPv@JmWkB1cI|qsZ-%7+3o(41Seb zbBa7{3YFf|aR;JEu_W6=3^(}e<{z+Sy~hVhuVUI5l0>7|e(FEcs)4Sy$%$D)e!88> z1dP4g!yW1#8I?ldo9l^>?jOn9My%b|3J%93Aq$`?y;YA?YDs_1)A>lt71yTCs7fH* zyO^qht!L*apwA{v3VJ65$~6?Cw_mOrp8B@6fC#HzRvd9?pL(BZsz#ZfkA$+90g|)FXg)o5CjUC1Ka&QX*r+q?j5MY*X5CYtVaF&(2GOiBQ z>ra--IfJJw;@8OAvbiNZ>mqh>6lCPL2%}{(d={9p%4Iu%n6>!aU*ki zB0TZ$0kpAU?3#-gJ*G{iGsbVZf>rsu5MhatIW}Z3s*6*F+SK4_i@-}9%*H@;1W6&) zWGvV)1xg=}`#EZnbv+|j<#gm^@4!K9IPr!v(GZADi*9UBeK}xV830Tsad~$Ir z{uC^VSXKxLZ}u4&gygHmN8uY;0L#Oc&#fy>jQy$umTo+C&M5U4B@X0Xo>7>j0@{gKL0 z4bzO$F@!@pTwC>)Pe|WI;;6=X++uCaHlJBCb&aafl$?bNJ@b0_Jl(4-_ zj9@J+3?zFNsm2TZbnEV#20$Gy5K9PFwh3({i1kO&`TABdl#x0Euh7WK|?f zA4S9eScpnto!CVcUVV8gURGuL;nripCwgL*;;pu)cFNq^kdg58#o%GA@NxWrPYpgK zQd5Zs+=^LMXCey_)1g`k`3(#KK1VSv_${YU-Qsh&<&5b#Ahol^9#B%O%0w84IhW-( zG}I&8T_Y!2KHvOu#t8o{kslMKkNJ@-_z3AkYxFdM-!z zCUT?=ag(Rv2&oQ$jAH!{P1ZcAys|!RNxMMTr6h#yX)ABLkuoQ)81XbxJez?)+{@Ji z94d*XAr6%dW5J@*Ts z<19#89Y*6>mcI$^HR9IUdz-RX9)&ojNzf9b6hAObc(p1m{Nxea23Gug0M=A`Ub&s( z)<0)XGzP&c3GaciXunV;kUjA+;#QD<9UMDO#_9&clb3Ta4~-`TS@07L3dEVRw{93a zK8Tlw3ETDb-{Yfu!C2hyAWpNc3JW?`fvX`JukNsXv*aL6vttBegUmVA0xRX?%`La4 zj=538BekaGipV6M4t5P=q*D)VBul;BWJ&#%aoA9UIiQ8KK%=rHH5@xk+*%TprqALR zbLR^*CpDv;$0kdh2Z<#`nYo(PynHHDD^w+{ES6bidE_`|Q}J#NX4nF>eODL$%Adu{ zMhSld-9n4Xa{}t4Nz0NIqKK{LxN>>I4p-1Gwms#NS4>-duS#AeLddxf`fxJjLJg19 zHdaH13ShIEnD-|f0!5-M72jX2;#WEu`~ps7lCd;jD4w}kRdOrc(@h*jIH%VZr=D&+ zxi~m7*>486_SPozkA3!>Yml2DfK8!MR_LMM}vIlDTGyY=&XJZqH4f->!a$D+u`r;W?*b2#rR$y znUr!t4-ttJ|=CSr%6R-K2s;{(nJ6~Ofv2Oxu|Awf4J8+ zMK!tR@18$5!3Mx+mOX89vTEKxl9zH>TdQou0xql>ge>5X)8$mloX>K2>x*H>DX-$}-r%agC{77!4%*A%pMiE(k zp5gwH{3^>=)(3*R>(e;*kL1R8ftJHUR&azRD3Rtz^0!B4kiUUJE5_bOa$9d6gtnQD zlzJF@AIWXKxs*{~R(WjHFyVppcK=uRXuJ;;;F6Jv(pVPmxrzyOK9ZZ=f}ylQ%27(B zn*8Pdk=)jsQM-m7cqA*g*7r!&k{Iu`v>4wgI(C1I)cRDdY;hjDNXbat{V_641F9n{ z-PHU@ZtI=prGl$cjk>&lB(L>WAzp2o!EZn)R0H+yAIWXKnabCMBF;UuIiSO&*Q=~< zC3&-w1hbU!NVb=%^O4-vn}pk%I*sj8HD2NVk=)k%uz@RnLz`f|8pA!sO?A7;No~h6 z9maTlCrscS&*T)U2O{82Cyw7hZnk0U{B+g*A15qegLKz~u?-e*|43f@tx8Fz1q-$Q z`WCGFM{?V5Bto-(r7c=MrJb(%v+3}1Rs^w=L6%G)Gd#1zXa2a5cA7W9QYVZA2|+7% z#n@gA{+Nlku0-XyGsP6=JDwrUR`4?p09?vU|GTQswjI9~1EcbLIh^^an;h4)h9D39|G_$hd0n-K>&k-BhmW*^jCCwMNG4 z3SpY^QFj1v7t1)@)+m$vEFRK|m=wi=j99;WEMovrlvJW86HC;YuiR&Gb0my51%|u< z3Vlyt^KzxIo-RCJ#`u_rGy6}IE2X4BQj;JXC5XQmjxuKjaG5(t+$#9ZuySlieSOTt zoBb!_k!{ET6ouf^8)_Q zJ|jb0(Rn&oa-YRRUqKHQUJKl0#yb)Zrj5_JrZO~a!N*b6JDgL!*wv4zxTT*0MW`@- zi+7Ms1LSu8m2yleJDoMm>|ES{s|=-)wjx<}refXitT;p&nuGwdZMV2$Xl1~ewIC7&Hu{Ajgu2Lt*ac*(B6)UwuKVzgbIaE56%XML99nprx?P?hbN#kQ>H0f;^$trC=D1bR<7xi(RlifbB<#w}V_+ zos6?GSXF`22g%UEsm4mc*yDHkJIH~lF;^jmY;3e$2yN>8Aj-SzYv}dRe1C9>>`@ zMB*KBVFR^x*#{tNX1*csU(teT*j{Gbgni$ES^t=c_kh!yyWw_9q=bu0ojC*}Im`pa z_H4I&6i*9zTozd|vXe==o01aq^`nUYozN-4ipqr>V_`?Gs(DT1_wqY3WpiUXtE z*sn5*C>}6kLdP!z0c%3o^0~0PNdu`mU{r(Y1*zuJQxeYbV^U%hOwK*Yp55Cnh^jc~ z(l<@>BI41!NimECO_ixtwY3OmXX3B#z=buE!Ni?D9oB>R^@BuQ10$|M@^OPi8$(UB zQ99r}ZT(TmdX^0EvXQ2JfwV@H7ds`-A**p{guX zv_9@kM~1ast1XY|f!RXF;xM~fo2Gmw_@&O79?)Vio(CSDg+JyXahc#R*~+c9bRIlP z=dzaI=)kK!-3ACFJmduFc_m0$q|B=YD$CTX?tXXzWJ#7jaDkzl{i*Dy9YD6h4WvZX z9Y96?3vUy-+ESCruPl|(@lu6oSTESu`XWGyHNw+H9)m(`UN771mCFet`)?XD7&2A& z)D~qPJbmO`BJ=gQWr+jG{<}m6{6$0Mk?=Ei?0IkcJdtt1lCzx9rR7Bdq!Ht{c*!X+ zt;(Uzt}ZX0ceGJKwALSMW$b>;Xf@W$BH!39|A8`J7s#B;8RuXzuuz6VZMA~N9dj8Q z*~9Ff=SI;oM{zD}xUwKJQ~;ou+C_?6t#|)EQ#RwE#0R~FgX9i+08mWenDkIKxwY>e z32#Fggg^7>7Uh_&GpXfgavu>i=7#$PN#$p|%EnXE|G7hZs~SIf|BAicXoKXBtl$b# zhDzn${YZW$2>7X{nB~=gxql>Yj+y{DE9pvbOg&`mzVoYE=i=-}!~cxr0$pMBeVirp zw!rWGNM5q4L?cmt8><+4gV@VOw)MiiC@}Af1RzTdJ6!>JuzR{Z5GsI=O_QpKZ0D+Z zfM82rLC{wKk~cACb4@>9X&!D_Qi|f4c|c4q;h)cVPGGJ>C!s-51Q6JFq|kPcEU7#V zV+*s^6LsR!M2Mi^$fP+OLO6%bq6i=J@WQ1ifvgZ!%mWQx7GG1$IvFi0W}T{2fraeI z?(MfxAaLAPt?5?VotwcF$}{J51Wue``v&nsrC3Xe^ZvTZAplaQKO<+OrB$~z|Mq!! zvzY(`od7@>UKAZsySzz@fUHfK$MFhs^zcm^-OY`T)nRkxOWj6iJ0M2JdgysnLfy9W zP$uH6D9vIygZK?$ILvE(tRrVw_o*bJzqPL{?@>sw*?}=GYA5V?nUytOK8SMoYks)> zgLs;S@IRx-I%DJ(!3xJSm0Rm}e8mwXZe8&ywAkM<5$9Q`|L2O4D+|8G10yIDgu;mC zY)*t^qCP!`++paK?42$alt=uT4=gRMkVzX-7OmPJFKrRGWG_3Jm7yD3L_SC&%5e1- zC3_RZD+tV-&T<;1VowduiKp2Kc9yJi7{5ioJ*IKl-o=sM1JKTDTDoGLa&M69wekXS zkgoXdQjkuZ;VDUuPYgey8gg4)Ti)}K$X}(A#%72095I&9Lpc92wY1)90f;SY%boiS zW*tT6`l-8JTw5rT8$>96!&j*x%_@EmZ-k3|4dcIRWVmLIg3NI!N4R9!W}@zRhT_1l zY0xe@T5f4uMk1z3lT;J7@RF(7Sf>gG8D;`dnpV&MlJ`$W2 zFkhD)-wlp0LYdh(|28~sI6^$#e{z0<&&qIv0%ut3o}7jar;qHkvvaM|J;~0*-$jEu zfa39xQbF_*}_xJ;oga*sPJOu;nPaa9c}IoQRr5HAxuTZlgSl72r*w6X}AzoR15DE zKZy5;28ry>ksk!|8fX_N&ttK~6VHCqX%;op5{mp<>g~N`KZq!(nJKN2K=A z*6NOL;!YZ3m&8d!6|c6m8X40iW?|*X&uM!lnoY1*Tv$Pdn&E>92BcV71d3?{aPAob zRPgWtM^M9eTi)$nF}fLXrpZtdf&Wmj;S>&zX16P?VEYI0wq!Ab5PPxeX*^`rnSwZ} z`EVv8i2|s2Po~Y&hlyn_|K}+~g=K!2)mGdg%&}pNtyVpJwK$R8izZ=_*&r$KgwNg< z2w>p^tD^?D4K7^I7xA`}A~dy`SY`NEr11SjY!d-8zc3ax995+)vU^jXSm!47$s}8% zYF>&*lHvf8o-4+VLuB^`RRrrAG#p}#YC=aQl(CO^bpxE;yl(BK^+@V&E;w)v=|&(oEU5t zs$xTMtSs9)@nkb=e$2N?}34wKR=Qj&$S=80ib=z)d^~mq@?Io-lubISj?^>e-ps{c*8~lg zt)L;*Wd$xWb79ZCfoxGF7c#7U-^JbHNaC_g)oSBdo(obBX96tFcJ)G*4sXl6R{3M? zI)-{r5Hj8Laksr5i;8V%|0aiDLLOwQC%I7Mk>7!qxL4N9KBM+2#`Y8C@JPtx1IU{_ zVJ+}g@S9DwWpeVceFH{=_E|8tr?L-E?|)f*fb8XvAh;>`wGFmqDG%7PY zfRc=HI=Wupvur}WP+ayQYC|SoD|~7Vok}Z<=}~(t0QV?&bW{V61_lCbRpmpCHt{n+ zCQzUgW9&B7o6z!9+$S`6g1|j8sem3>BrQ5E=K+GN#8AbO98}ecI;P^T(L!9vg7j9n zu@ES}6C1$SgIs}@n+bHs*fW*JGnyVPr-JvKNMYx`3hpvoR{Yb3v1cl7`h|hqNEp9G z`zK-9$xJ1y-3Qi-YOaIwRQydUc(aB{f)SJwtCY9BC0oJt4zu^#P4Vas$6qTUNUA+d zS^)=W#8$ws;rIq!yAfk!I9~iF?r0pV-6|ntVI_3cxlKP`HhmhQcYG6X1L}roLX%85 zIqpvS8sYcSOSSCRC?^uCd$demz?K(c_LmGW0^vb*BbP-9zfV@ zBCE7Z*s{4}5SITbn{CsIfOZf+_R@;qqMWR%ByV$;eNkWmG$ZwM{b@XtzUQ zA_Usmem@rYtKoKq9=XlSgu>FPMZ!~m>&7g~GZTQI@@tU~k{}LSc8He=g^{zYq7Y1+ zf)1yA(@c~FJsBOM;!=G>R`G*)HLrk9Lo1oGJY*@DGPz~3|B2dz)lsecAekij)<}h7 zbr8kwy!($!6M=xI-CUfA(xbG05GUY6`%E-nDZhau_GyRcUxOmL0w<5mD`+siZW@$K z$71$_c*{t%m1yoYROyfMc8Qc7tQ|fNgt$9Wew#;u8#y8v zCQa{^b3~c+5maazspf$^cx zn)6N)(!HjMcmolDN^SEx|MYN*C{#+R8}XYHdR|0AZ62a!gYi&Niuka9M5nQV6xce} zI4Ijz%|c$(Dct;=9VB*{F*2serCc&|IV}1M-c|$BE;|!9r&gw61i6l+T`z+XK^xqL zk*P4t8PUE`ysGX>UJB{NB|f1Oy#jjCbY3CU4 z`2>7(U0jUUPi~LMc{zJz+hYvsJDc;eeRcUsBH(t#4Y0LmAFO1WHA^A|B$)(RWJc^GvdfZ zA3>Mx28O;PIMGN3AqomH=t}J&OxxUg=t{U@`eUI~ap&Cs8fD4sy}>r&b!>b$i4u6Z zVwkP+o7$%-=Io5)wvZYXW7kJVpf$G9Uu}ina^BKgt_s)iDuw1xP}q z6Y_{q3T4k3W7)Y!KE-rcz$NqbVCRgmo5_P>HYUG~%HWy2FNVO|)qW@XjU7hVL*?;n zr2fH~Lhrt{kcnzTOfElljg0o-6aWrz*qMpSuuK3>Zl3*^BWQdcIDjH)u zUz%br4-ZD%CUElj9{F(*Kq92g()phjgZ z$QODesXI;-4}%1=EY}`WQY9rUl({$B-a_2{+mFUZFD7_spIg_1xnR5Ocazlk^G z;*lMT1d@#?0dQWu7IG^pA0JK?;Glw@vzxtMBGK!L7&jR-mc-nQJ`^46vFxiKr>FZ8IMPjE?}KYOxOfsKvgt9Pzt{ zfq^*p(YW!j!jn1ni@Rh29-brNQDOz^lf>nzxW!{Ew||^LQkM79M*-EBr3S%iNm8~B zUuF05H)wl_k#tVlP>P8O+l=3wn8?nXrz%FDxxo+BF&5dKQpbZ)1t`$PxtBW(JRA%NijbBu z@M8u_57hER37idBSTX>gY#2K}h=+jzSpaEa8K9g#m_*`JMwICsH8S`uWVU+KM7$Uj zimn82asP__ zpaW#?4OECoH2tj@E}#qB;z+W|+2&X5AS*HC!`f?!DFQ=vVC;P)Z!Tz*gD_!wm7MN- zaXx?bdjgeeoZLyEl3@r)#OC{6Q#Ic0d`&t%RfZ|u)O1KV1OkKV zMuyb2d_R=eQ&xO9#~8eo2;P*7pr#QEcR7Th@0VgV7)_TVTuiGM$=}prsrv5aSM24v zBA2~oA>WQ4Xhf=&p3c*m_>}morwGx`N2)zJ-gXVbm{#KQ2QewGUNVTY^A#g&$yIKC zkT%UXg%GkuD6?00!!<)Th*dDWtsJfNPe3j-wjrW*kL_-5@SFBrDnasrM zC4B z8Ce%^5s0a5leYp*(i18xTX4v#cei{HZ|W}NQKeb1(gz{dL>pf4L6GlP{7L&fyqP=j zU?K-W@>-VY&fiM&I8a7KlZh5sLC?#vW23tZSyn?A-)P9}*2_G=y72ZovH3T%`8zg< z7e|1%dcMJ2Hm~$Sh#&)&W4kHlwM@jrW`X}%mb8^jA~xUwFQa6K2gYyFZ~YxftC!4z z#_|+*!yeu<`?ZAaJ^M%T4xB)O(iZV@S!g44Ou(GyG0OlV){E8F(lN(&ljUKukpGzV zTGM|>qpNA+qVqmpk5QgG-N263&0~S8tljG5C4Q2=0%XXR7KyK@E-jWP;xxXb)mp(4 zt91=2tzz97Ey)d)cwX=#lA<~pe$sYc!qK9!j|n@;#&_- za%6i=pDin&Cu7L{L=x6U6yJLbq^p;Ug9or_C`kD^N;_n>NNjvxcwTUR+mXqun~H;h zRGe?nvth$nMyCKrVM2T^sb09y>LKF5Gh+=YUr=09Qxd~sz5#h6)vS%;^!j{5(PDX6 zIN(j7M`*)Hvjd9-wB3#A9gLa9!a@*+<<-IUuzJdOIEB%2WEjMmseT}NVP#_D$Xn5y zj0WAFo$k%Z99?x-6J8glk?vALYDl-Rkrs z@a^~gxp?;MZug$^zVCVOIZfIsoGN%&`g(J@{GRHZV^wOe6FymNu@L$e&f(F3-Z;4( zEj0QQd#Rk_M!eRQ9lq!rB_1#22aKpR|LV_4>RF$W^&K zbI}<Bza1B4dk*1p@&LpH{pCu()VlIhU<_-u&Lo z^|oU#6ly^Ansrm3sy|gjUF!} z=Aq_Q}!*p?A1!m}VDL-21kG*2?IjHaU7fh0&y3!qAJ=0~7 zf4&Soe-#+kyck|5@nd;~9DmIJ{%3YqQ;cv}OYKUHi*0Y89XnArU`t|h4<9BOAFMd< zF+AxQWt+GLx(`_rsl1i8s=`}oHjIcszZ)>Dof!HW?N%gh87m}u7f`-Su(hkjd{5KX zlB%k%J4~h?yu~UEG=e8Jezj+96G^;Gs(^6TRA9+_)BUuN z+~ybk{24a|MYAm05rg-RW1oLkFtX1!%yvp38Vzs=yK#A{Gz7+kQ^GQktkdW{;9We$ zFKN-QDh9>SS{ElKlJps!xpFHeCnvHF8F{E&R-EEt9gBbH`Knsfq*LPxH$prujf?^> zV1nyvtIkOrtwzlsL4NL8lwShH!W~18znA^g2}j@19EXXD;YMGc0o)Sl%{$&3Yck2| z8R~z>Glah8MJxI2-#H9Y^#?RyMSM|YG-%eyj%Ktk=SuVKw?A-HVha)NSU13dxI4a_ zS0jwDzOICt#i*kR2N3_M1OE}ui^Bc=ZoTE$mcLL>kHr^TIlXc41`fA^Ek0;3k-2h= zCcKef%l)D&%q1D*PiTc~Ml>XFzCm_AnM*9oKd{P|P2AEZQYfC(Y_;kjH%IEa1>g?b z7Kw>LWJa|M#W(cv)lc914lsb{y?WLQUd$z7X0I+*&gO22(%<|_N=C-7sj2j3 zUk3UaL9lV~lGbS#D)>js83vzXg%1uJr`^^^kIiMxIR&ZT^$->sGinIPrnnE5wg(hB)O``5!{Z|3ibo8)=>?@;g7hJT7 z;)r!!s++G3c~)|gLH{ufNY*r!tj>sG?vDQiBTdZwgPPT?e4>&_qTuFBMOUb6h+UE34AV$vB&A7jmjd&)HkGC46v#Lz>WNK8dn!Wp04CPb&L|Vo5w)M`n;qq**q0Bw%nlC4^&R~5?oGXnm$B%nN zX^e5pG2tW5f`E3xi_wpT0+fP?x6%EdB=nbB{vM{k>jllLXjmsQOpXHa!IZVD_4OUf zcmuU>t$t|@$o~6q>HFm=_1*3?Ai@gOVXY4EaC0oc;ooq)b$nCDAE=Kjau5etz_{CSdu))KY&PAUen#F#A+yw_h zkJGT}dPaNU$Jfh8Czk+1!7>$e>iEz8K+>;2>ukQF*7ZgIhnz>nFFGmHCQ@%w-g-_U z48YkU>H~DIKC;9lKb3FEoe`?>Qk0yb%aAyiww!(%%g5u2(Fx%NbpZnUn90YbPF`FL zt{$jwzuMoNy)#4(2|ADCF95YTFfA3HdmuZqyW9`#h?kEuVk!Tv-5|O0tmIu&aHi;w zUf!or_&&Zqs1#0&5xc&1oEh<>iHmFBBI*e(CVGpp&vQ8^)U&z*m8Xcp#9kD?Gj5F~ zHR1z%!_4bz-vOIECNHU{x7*My_s&6o+vh|X*cOn=?%nmqU%q3lCp*8X z{Fc(US9Bm}_+?wo?uXf0h!bzlwNrM~?FZW%_4Ow)-skjY9x%qR_x zm)qCA4@Nb|0Ca8BoNatO#}H1Qe)*oM`7;&Rprh(`Dep^h5eWqoNfFT~356gJ-rhuwRn|<#7LovpmG8Jx&;%-O5M8^mv&BfU7IA8mXKaTX;%c7lP4{cDfsOk zurWT2H<|OdwS(9l3p_uVivXXk`FwA zBqA|A>A<-xmj=9lf8~kC^HT@!2!iSUfeb|q& z{O#+iWK`lJfnEK8ML~uE8Yp>OdiTRxdY^0k>!IH_`&(u4!To(Pn6bymi-KuxEsv$Uq&wRxUG?OppvTzH=LBD#FrCp>KS z>OT>kFufCZNe;5}z*fn+ww~REdaEDUwTik5#AT(hYcEM_q6bqKGc?k)#6y21b*0BJ zX8h#JgU4j?20pxF8mnk=HPI2oC$uiNRGalGAlJSlI3hubrC)M%-fr{7DN+6b{)QR* zM>$`p?)=qI9@M+y;|CRa>?2wRb*R4?zz@aK`e)6dTy9?l>&5q88ZC_uY|Wc$ANI4C zuMfFiR*{%&+3H6NlHQr*wBIl|9Brfpyy{8ey@Mv*K{flDHRo3J9cA2OIl`!Z_uZPe zY58nOF}lkr{3|VPe=9~LQZOh`J4|$^u{(DF-$~b9PG9dbTg4#gol4ji@xC5q{Q%0f zaN{BY-Bxw5jVM(l9Id! zG-R9X!)R@1olo&gXCndeS$qQL{!8Bz6^Lw^=m=6o4!3d~;%PDK6v8VnBtDv(b$eMj z4=+h-oo$-#{#W(4c(+m<5ZIqj87nc@uX>d>jhT(LokBt8d?pmvLlR;nd8OmYw01~f zp^(iT8&J=tA_dT_{6vIzsO>PC^-jbHt)WKcZ$d=Z95;l^))78f)tc=WMgvJ<-FRI` zi>|TeEfl78dZL<+u!pNWWf#O5~|#Cenh*KXb{+ss`f1DZVAHPUuwbPu_*GNy! z!)+orf5kV16RaIj6cF=cnQ$Y2ko&|x|GhPi^c8C=hZ?s|%Tanul!(>vmZ~w?G;US7 z6BQd%%gaFi@ht;U#c8<}N9^9a@yy&RUWx#FK55kQGC#WC`G<#U2BlgqhsN1Vq7x{Lsiqg0+}~k91UP_L8=A>E3Q6hxL;{AU^%%Q91->6v3b+kT zhU&(BRmtJ{TMrZ{2dH`v=hVm-d_dp9Ng0$W4{`Xe>KWke^ABq(*{bLgYgAR;g|ZW0 z?p-sl!2Hyd5J`;yxE7a6bHQuxjS86sx%DXi7?II|lRfQ1#t#=Y!`BzH>0_xl_jHs} zGF;pf!leQqy>Nx8KhYTco{r$4$J84qcBK8Tz(OuknPF&&avH_XSdW@WfxKQ@2M-h3 zV3{-FOkVIX`Z#Yx`c*3gxEQ!$!TimEg7H?}C&8}j>TQ_4}xx@kVS=S{A zs!*|2`Aqj%?t*6>BEfc~hv=P6YD!S*8!K!0r&Jq3m3Lm1o3q|qf6qvVgM|)fvU+s>aX;Zlq7SAi<|^fRJ@%kKj%Mxa_C`2TDLtnS?xh8 zOdi%u9=RHILk~wNuQ5f0HF#|0b+;5tj%Vc_Yd=bTU+42K3&~Wf8^4X!6L$Zgf=(Rk zaOb{H`?>`YAfaB~xtOS)~< zTJDbe?{i?ZR~J{=JKJ+x8f-RHR#Y_QBvYi z+~#5l|DTAR8{`$($WJd{h@6zvvkVWWVeWI5uFt{L2%W$%jCUtNY7b`xZ~dleXB7Hwq=my`uLqUoKmDdbh$oHDBn?k!X^O{S+E4Cx=tv z%akqC#QNbfucLx{YGsIt9guucFT!AFdP6E7G`KPYF(T6%j=jW9pqkM({2bD?5nQ)j z)rOd4ZAl(DB+hNOmtNQd%@cQHSrBr`q*6=--SW;{|_aQWi)dSmh_wo?8rf&K`gIWtNX z#)#j^glY(oEyk9`k)p6wc@N8VWX0y@5_z7dKv=|RiQ*f{dgj%rmx-Djs$$8OJa=bw zjQLbzMRMDu)eUtsf$sFpw9KaEFTNaVq=AGug1lVFila9pm#avdO5D~WsOn!x-R;MO zgjZJkTCtE<;!9pre~@qArq5p)chI9lxt>kf-zNFp!vRi)I|JQilj)#he&LZrFF zrRm~bOMF&J_L%WFBvnP7)4&{)0SIY?#aa(9uu0-b#K2!|__Qw6QI^x8-jiv$CXQ_=4o3yRrO4=$PI?VlNNAShgp%d? z4fj@~feQL38gWO)0`F+Gy>@w5JBcHCWDWeGGb^1$Py9P4H~=*>zy90?NCI!sI{P*| zG#B{NpWC@x#H`)It4!x^Xc$Klo? z&2+NdmoArcvQxsRinIFHUzM}fHx>LS&HqmEevT4Jx>R)QNtfBurxV)1;Q?C!njw_# zmxcPHzkG6%C(rVW=JmDw4Gj(w`HW1cig6D-{E0hU?$Qm{OCWz_@fSg*Kv%!&ni)D=L_%8c97pfC+)cKUxJCu6Z;SUdn>MPDN54s><|2Jm;kxK$-&M7RKZBz~*W%=b=f~+g z!}#@{H#k;6-N>;|nRK$%8najLI_ek~>(!P#f8i+EJd&v{yo6n|tSyv=V584jWja00-L5ygEK1B; zAl^d`ivEo(vuP2}47`OowH^W#|1^L)^~NYF$6^R&oukGdNu zr=vB_JX-zj9{_yCGimg`<$2reN#`j^>bYO)DejTeZJKemQTEpa$&{hah13|S;m#XF zmMb&rzr0&VT*>cE(o3KJZs*fTIT>^Z#WIL}7)l5l>iC_|{(S!ac{xAuA5qW)!}DFs zGtTqM^HZsmaUOF1#+54YFbLjV_1yAwq7%CeJY0W@lzQ5h`j>Ir{V&pa{@FH(**3{L z2pALVTlyr`Dy9c?(gQ}#i)cJZJ^c%M>R%1I$4j2-eq9k2)7kQv|Af|mIrh3$(D-Ui z>iOLH`KkNqeByckf!;s!DxW$+;cA;yvJh;1k&xHb}p*Yu9t(tFyT+yPX`ge4k^6ooGyHs&e^H z+s6^1pY41)r*lzPVLdW0g0K--KZ4a>n zyT!c_@X^@Et|b!}*DUzGH!R))huWlsY&e#y!s9#(Y%p2j9eTvyrnVoc_|Ue|fvde) zz>x_zk(~WR_hdV|7&WC1e#a6f>?V@S(v-{n7fpgTu8okiobN! zhnx5(5h)rB)tCc!tqrZ;^Y-pS`rK3mATVR_K1$HWw)F$+kjxAaMy9scqZ+pB-)e?T znfgBGKv)=U{8;>?4bW$lmf9p;n`uxd_IFzbm-3n$p{25E98-5DIEiDd6}lKO8L+)o zpPQVo@3}B>HTQB1`sQl&@q-PJ3aV&&plEEIPPRYhYzZtSEOk#)oAKT7mzT6iA-@Jd z2TrCwnYw{k$32yNcdRP;VWj>%p)ma@*b7Ugup)uJ;#o##Q2!X@OTvKyatWZ~g*GLC zEl%++OazugJx=m%3<9Pr(Vn}(OTSQ!RXxvy`%pSx{*IYOgijiG<>+@0L3on=3^9i4 zewEF3ioi&vVc&)!T>_Ea1*czP#vog-I(g}*TXEw(DW+Ths_g^1rT}%no7-~XdX;x= zJ%1xST(iKm6oQu7FW~>EgkdR}@ZXyd6|gm#^s0jND!}KfI()@Z^~j91RGW6tYFpn5 z$jaIoB~?q@NxYMS{Zq%JeA;KM^)kcruX?G~BFuFDR_|O~kFnuy)d;*eoFSv1HsQ1LG{G?j{V-ERm9aaZ z`%&i51l6uK*Vn#2SIMhnZ==_ZN5l-#>qh@EpjjWDmH`;^IorAb7CY6d3{Qf{1CBe| zIbPA{?Te}E*#MIay_-6=kh?=L_Y>@9Km17Bt5BP1SRH>(;rl;8Kv|ACO0z1S#mIi@ z@iJpUsa2HcrAc~AF&3Gi+7CH_T`qGdJgJy zwYw*1yzSXZ=+@WeZ!+{tC)}J)Sed+Y#1zb+FTj|`wj;^pDsp5Fvgo{$V^A`Od~etL z+|aMaEDpw_cA@@-WTK%o-)iJAYz5Ui?o{NIj;qmm^DTkc`ta6%NS~cbrzP_qgzWbs zAZzSIM$Cv0b`)}a5MDO~QR$VPhV{r{y2@ppu9Wv(YxZ4dSck`&^+Is7&uAr(Tk;wR zQrpJ}+L&#I#tcI&dAoT{r|(tvqOd)B>Y}EAIwkJZX04g;z{8uC&ra&LD0ETr$es98 zJ?6tam6=C?Ox=#*&3As7t*HSo&-BOukD}QR9#sRE^`k9!kU@wza@&@%398Efd2>sa z3opjbV1a^rt(;Ob*I0m!<1UJyDvr<`L1@D-$3}#G%m*T|;hJi#<=P*OscC!4kpZEu zTy7?lPXRBt+&~mlG~UP{fu@`ERAa-M?a-bV7ho(o zjW~wR?-uzmuane#`}O5}XPd&6p=IQcnBiHIUzu<*CEFf-9p-E{RCgZg?s$at%;^|J z68EEO5_P=V+z=|;j(FPr*hw9ej6auAgcEx6^ZOYl<<*zr zxE*)pM=m-Os;Y4Z^sSnFFj@J)Eqa0)DziAd$8iTalXH+ZEZRR3Ay*`6QOQL*Lb^;9 zFD%dWE}`zUS8`dNbT&r6X4lYRG#jpbGuvkIh+9I2*N#abg_`q1t)rqtGU8?TYlb5- ztc1tat1pW)IdGDwBB}{I9-e6+4vT$q_&&tn)TgssX-3!7Y&k}5EEH`ge3Gihs_WJz zRK_Quj2(IVmrV=yGesdgIG?zNK?2O?mg^$XdtZKho(Dp_c&@ERn6gD|1^WXx4kP!?DrWqu`*u&O{l6n zLrns@f>{TTGrm&%tR4$#?j>L+!U%_0BYJ+(4|u*6Gk>0!kVTchD@Sx0J-H7lwBj(o zG5{BBGQ9LxO($EsCiT82AA{~)m-Qozi#x_IJ*>*zG2|G{D+OUjKdQKFwms|{Q!!t@ z7$DNBVp2a5w#XKQ@d7e6bIX%Hk97M@vpahxh3~qdimg*YgT)s4+M?y&ETK)(`#8lj zk@%twcYf`XtabsJAwv20qAJ}%Y_1|LINv4^10%Ut5A(D0yEdw&tJ$HBdAV@(HNXQ@ z1+3qT7!a8P|Ju?_5`pn$BV!{Xmt*fCLlE|kH~#<r{7Sjf8GluecXP=?VIn?`9$MmOblTz0u*~n<0Y0&B zE&cdLI%Ut)Zt6vid$x$FB(JGi_O^$oSzwvBNs2itGSxUS?(^$p!Rg9OW?J^hW6v-S zS+d=CcFDA15~ihYfZhpfHj+&h9(a+-)`RTf^{__7p*0O17qu9j0DDV*K$b8Pc!)X~ z^8NP(YPA2dXG~6q;Ry9{@cPik3;ib90gC>fHZgB z^|{~ZK!3yEMBW>sX{V{NJRP z?6k~>+@Hv&m22EjES?gLOIbwUy2+o)RQyPw&U~w zK4ADj5LPj=+KT4ce7BauEG}emxGU%mLx#brQA6s&dG@4Hz-Oan(@!AGr;yr!ZWnx8 z_0k#f8O*R*!l@o|mKb9Cx;smd*_#zjh?VstX$e^?oW?2)LCe>s#`bpWYX)VF`*tzw zJWb+`_2~5QBfomPHPAMe8`V#h3V`kjAx}eFcrdm#qS{+ZI%4_E+$%r73*y&?)KS5A zNh?#hzHstNPPaZ|EwFgQw5ck!&AU+uydY77Y3R4} zoxf@818=#|QSx<6_wl7mdy4zdgkLW3yUxg%%rN}&c&icghErA*y`5>x%k-t%eskYP z`VP@f_-6YYda0`H?@mOxg#K^9wh(M9Na8~-o@3^V1vXEszZ}O)L0QcKvuV(e4Q0rf z=JXb(t&`$B0%3}zzq)|7!d;Ixb5g#gRl0xfCl9hClRkT^;|p8<^79!PApxP7zq7GJ zy@5hDtvqR!%7O=RdjBOHusKtwb6WemfqW(XNCfQ{PZ!eP0>6|yF*pLTj=PtGJ0o}W zZ?;3ynb>sL)Y$%p>^15gmu1;K6J$e&PCpi!h`&DjeEK1Lh1Frr>qioD!FPYYob1xX zqA}CdVCLn{kGw4mCP5X;+7yZPDA5*WY^K}Rk`ZpJ`a+WqJ87_1rU=_!P*|!`VK=BRu`tvg>#SKm?9791P?TDNzKyGMy zzK<{m2Y*$yX^O0tcin2g0hLs$I(Ej(G`AHlTc3;iZQ|(obrd$icEI3$-s`UMBe|WW zq1nZEPa)u@M!$mUzG?`(xw;^Iv)Y)ns<*&8M)Nk-tPc{Z$7>G3Jm$;Baj3z~4cCe5n94=VDOcNv zJ7{WGr`Qz6Wt152M@?oNVLWgOlNxG0a?#a0_F+5;PClAP}QKjD+O_vpg z3o2wF$c36zlJ9$zYXeaU+Nlt!*flBo-bl<8obu&KQthWHR_uCqgmeg)@~c%w9?=ctWY_C_p<%+(hOoW6 z*!j;hx{>OAYDS<1VSd+qC0-zG*%{@CHZYh&ldsI;1N7wwsFHqD-+qk%3}atkhlw9{ zao=aU3yGI`;8$UO@b-_BR68###UNG28864KQG zp0Aa8ot{F9cRNlQp~PTKiHy~5$%cC!cU)|HcuEICLEwOZ(?6^-fBwQX>DB$_iDJ{T z!1jh>SVC61K-kQ#W;E5nS?JPNJ>6XhJbBw+$4T?YKeQ6<)p4v+?VGxIp3;U$#;$3^ zqw>?HAWUM1A$2y`DQ*J7bJC$4;{W9pZ?)RKQeRP4#{1ZLKMh#ULV07DN#LbNZOSrd z#Pr$);N9&-Pt=)8$J}cMelDFdxMo`vbyE;QJ-C;bt1zb}md7rc!@~lS1-<|z!GFol z0ht1xyB<9Tk7xtV+prGv>1(v7Dol*SXajgCHod%fc_nKuTgc|A{bqy}iiCCUNQJ%b z)pPq!G?TPC!J=h?!!K*x(XT!a{^TWsH58%V&K+Uw5Y^t@tNwh^&_xIb=g;Hl(#BW+ z^+mS8=!Jw{Z`)$~b8Zdp`qhB#&M@8cpED%FU>{;No z_5fbgQB^Zf_lez$B|hD3aPJ0vXsl>C%c_zD&}|?ivU+r=uDXW@S{t{W!3R^VKn#pI zyatv0ifbk>7W)Q=cwUkI3kS^R!0GKs<31j8%%g50iL~(Oe;AJ+b~SEb@bK&HuWCY1 zyS6wx=1jF7Ny|!MSm7R4_*9dZ;Jyb|<6=1}&<%FM=31TpwK_vd%e>}H?>~0PZj2pA zpqKS#Lc%}?VEHmynf-l;iF}Jf^k*R?G0gk=x{@jbkxN7#MH!1k&tE?ks+r8I$|1y& zkAMlX6w)2PRm0s@eC}7!{KzKHl?J6d8_5@>G7h{CM3C_g#c!(5lnDhC5bT|&TZ~~3 zha?}MZ-Ctf#=?kK3>1MPU-Wt;am(PtcNA)DiIwUyeHsj#2csTL98(TSH5o6|<@R@N zt1oYJj__YkI!!`yCgm~0lM^1dix4}5yB?%HA^icqBJ%+mjG>1! z-gMQrbdIFnVdPZwM%tJodO(=DC_NI!jN#Dz0(>Ub_e)Vo;)wPR*K#B{b_v2dBoiiI zz>IpnpvN}N1(#kyxlzCInns3oSzS>q^!9kx5E?|yk7Nj)ZK-+`7L*< zd_MeYkL;R*PFfo9Rx;q&0!5URD5@8&^c8K~7CK9w%(1#mNlp}W@yPoRNAYu@?}^foDOllBhD~fm&hzL<*w*OhHoe>^SP)<1a+`hN&DUG&-}rRerO@ zI=8-G9!yu}rxmJhj6gd`E&M2&M{8=HvWNV8Yp{oSEkLa1Y(B{`4`FVZ+-2~1w05n5 zmcIX%^w0sPkM>qaUj>9Y`NaR(NAksA=yg`(W!3MT?%wYL>DzLkjVHL-ECT?jbHfPM z`p_r`30@N7WhcSHr24l(Qhr#dI<6b!%Qe)J#!GtH?3NA=q z+T{yD&(ik2_nXE+hBgg~OE#vb#iPe@&;rgIeg400u#HJ6By6%ZV*nV<8*u&oP;;r+ z4;sAYtnZ}i0Ncw*54m?Ix9_X5#Veoy=g+v`mMZ6uSIx7}h8ge$U7oX!%8>&?{~!cl z2R)y07IZT0c9EM?D+!rKO6TvzZb0wm7K*ATc_M*~BliWXS{ESY%z+>O1k=LX4Hww^ z)|^4b*IS7u0kIkXoe(WT_u(jBB8`YdouF798zw&5Al7;~;WYFn1oJ;YebNff2A>7Q zJ7fQ{0C}C!PJ~e9BT}bbldJ1~9?oZh*~yxkYK?GR5)c@b4Gj@6JAwT9){qBEZh6UR zD87l2APGAXf%&(BJxMgJt)9uJf!BHq?jV9nbXIYQTwFw$_v$ard9Tf8tX_EhNh*dF2kvU+JrE1y9lO5|mupGL$SIeLm_>jV~y5 ziV2;^SyOJ*0FKEWm?$Rs6LuN1jmeGm{9ls0AhNRzW|OQ{8K4gA)wcyETvPB7^+(qY zxzVTlkZxifhS7fF+GnC4sc13!PlQ{Pn=MquC?c?%G2VJ9w^Bz6qFO0Ht4smH!>GD< zS@JGt|D44ju*>@a%E|5|?7=UNjckB=D6v?vJYzWX@8NPFGVv9PN`{qt6L!5-Glc8#=4T!rAF+la!gJ4@)Yzi7@@vydvBYNP zy<&w+QZ!q$mG7)BO34llwjrmyIscdxQqMUv!Qh(Wo_M9sh(~mf7y!Wy>^hq8A|e00 ztsjA8o=u;~9UxsCNp^?gz4~}tFJ0Jlf46^{v$(Bb}1qMolfw1UO^o{#qs-h zQ*jpy%)HfTVvYd8JnqjhDdB}9b=wTAhq@dMxD9A|mJf9+pHV@ilxyUDNy_OSe9Sf* zo`)tzqO@^rjV-qPTc`5-6eRleY@luw5^=NL_#l?%7zFxunnJBxg4HbZvSXZLl4q=^w#pq2WI))lSdwHx?sYv7e8qWT9h9E z`9VADH$0dG?2h`2{{D6Tz`Epp|4$D}T^mU+C!Wd$h^-Ah=pnD2ym9jLlNnI`erkDy zk#rq@Ze$EpsT}Q0tc94XBn!WY{P|}M0&b@0u>yS!gQhc4Ri>D-r6Y`&e%+R&`1Wz@ z6y`6mL?VuR0QT($g&Bs5Kx}2E7qMwV`Mw+ezTi*ps!ZiNFMMXd8qH{vbdsJ zcps{*Sgl=$9LB_r=~*adgm#18_VRLcY=0N@jEp5z50UyNJ-Bb#9#<@tpULKb?zhMCJb{z-R14Wt7h``FR2TP1#cI-^1M#5OV7XPOmR9yymt6 zcDuXUYWu&<0HF>wxuXosYWvZzO@#w1)b<&hVq~|Tt;!DjStw1fOEoO8NsOjk{Xc=I zP}!g_{O(>d9l!2l*!1&7a=iCd|B$0i>wL;G&A*kX|7L{?Wv>< zC5N6Pd>JSSOAv8-8*aN2WP<7NZ4im3$V?xaf*ulZy}8R{?>Sh5lz(5Akm@&6%d!h; z2V$7!+A!GzNYBdKCNGYWPSZda*lK!H-;rvWxmJt3bz%>Ht-`Bmcakwx*mSHtzP-Pe}suz zDNCQ^e;7;?pyK*Wc$1JWK+*};jWI6KUX%ij%1P-g(3Lc>&9hhBn)rEO9*46AIHR!f zYdMp7Iky066+16tupr-1vEz4!dE0S`}a7$-*9go25=#GsvubnAFiqWABp z)HkwjC1iDj%E=g!YEP+Ko~NA0eGvbi+ecCe%o^l$4$?GIgslz(hvN?baA5LyQ*_(E z0gt~(4B$fAHjl~Nkm`5ithDvMGm3J$^=wNJR-4t0`7pdN8Pz(1wZ`&r!#{OI{@{g{ zeu(BNqAXsl0oVD*Lo86NS9bXJz1jGY^|wI0ecBErajKcVt_IiQP4 zEBHvh)eR=cx|%YU>IORoO#K%F32WRlI+i7o14c26XPWUUt%%Zoz-8?^3G2j$O?503 zWfWG{5=hJfNBX9m)c1e9Y#QJ-2W5>$e23xX%6(g8QlHuM;8sHr`4b@A0r(03- zC0p`tR3ORi#dB@pH&RGg~#}Uk^>^(@@?=k`rZ4LB^&0 zwaF(lIOJ)3%;_!m;a2ytWv6HJ#qq^yG(LUtXdA|%TP1@Y@qxO}i_dd0bpRZd$1ZW9 zfTjy#JlWT=7rz6)k9;QX`yg(cLR`XOelfM>C?K=$MU^~^0YnV_$Bwo#9)rfHsU*j?Hp38N0_rk+2skdvE zS|d?hBC^xqM6bI{vfUxVB%=g1@pB;39^ejgL)O)J>-y&V=;vsVaHy!gc+~M?mocPu z^I<+DnI+KAzzC@-BX;gamd1}=`@`=rgt4D`sSBdR?Kd{Bq%+y^ z+4g^mB&$gmuAR3@z%HZmONq@_c*kc&5y;|77I;=tSxN`iGEyQQ%j4{h6%mMc64{nT z^t#fB@z=UcU}wx0wK_T*DeA1J0XO-_8cf!Z*G)5LdBU*o33eegA#D&6ocA6Jhd=i| zqW0E^{TES+k$SN%L!P#&?o!sVT~7xKoL0lz@OKsK@O{cn|E9;y_tt+3;xHvxOIfR? z_+85e;yA?J&F9TWf&=d&iLbq;+a|Khju8|1Qgiw(frV z5Qz~hf0|&4?=$SO5*j|dgw^B1gNlz=$zUZy8d%ywj6-b+_%4P~ zD1sC}ww(XvcyN%Ld7>zneV04r61*`Grff(!_W95iv^kQCGyvhe5I=AkY6|&uYU}ZH z8{(-GN!*Xxw)x2KJIACs4Y*L$ZT ztxRb_9Byx<|7bwybC0^+vU0^CrRr4UFCOR4Q$MH3-sT_cO%H4Z^v-~-mY7J#v8@AKYsatkPGnD3_uH6f2Dzwvgh#j*Y|LwZlEbdiZi zD$DTjPt0~}%FiD|Uf|lN3hXF-nb0&YQ=Vd-*63V7jy|Ww_og>w&}UlG1_mmY)yH3s zTke}+D>(W3h@ky``5yc$eehJ2W=Cr6{I6%Me%(cIikfZPo8wNZcK>$e$9rhFZgdqWS7Bo2w{sa9lQ5zj8Xc@l$I`P~<;QBIk72uL&N+dDnlx-h)RYG7jA@^~gD#^{|!f@9+v#3_m zgq(bxj6`ww`O?9004a_fwVxVjfp5qDzW`?~x!YM%iBE-Nz97i|y3T@YD zimFoIpty>j7VF2(_~E9IIhV6XYuc;8&C*l@9E<&&^`>1v?@qU}Q}-|@GCknipYe4a z)1@&Q(OVc+}HXg7|F*3Yx8pLO_C z+N#Tt+~h?tx_7F2x;Im!kKlT52r=IC!K5I`A4VpN0hW--foh_>Fz?oTD+$9iPD%Fn zvVUW08R(1x&hr?z@_t?H@b>t9uE&bCp`uI~{*r&ky~}wjO6sROw{<jBi*C_;cjaeDoWJvvoanM;=%KY!S*3jH+GF|(`&1fxe~-wV}-PN9Vl-- zOl#euRXKlB;neq-b{yR8?-=z!=$ceHy<)kLeej;3I3W9K-Ppl#!ud=#;0X-FF5dgv zrqS(^`f!x&j}QI}QOa0+dE$tEclK9iBV}dRdG;+90OBOQTqf3MYnLT1dizk-N9tD4 zPB7UYuP(a_IWf88<{d&Qg%u7}j-R?jvqlmR?>Y#@LtCf6_86tDZxpYHcEz@Cl(||| zUHBwYn~0Hu!se}&n~vxv6gUA@e~tI*n4PA2@Gg5wHW&DbYS1Sh7ebOQ6EjB9{|<#P z#74x!H5V?Mm?DiX%o(xLy1H`EOo85eLr^Vg8k!y58x`M zdfM7IER&8#g9o6Uo4l2XmYh2v#25UcM~Wq6CZn@rrI2C)bQK z;5Ils?4xT8{ha5&RQ;0D+dEMr8N;cvN5ll0U6x-XH49n2Dt?z>TKyRFA3>oX6}7?J z-LK?2UC5)C&PTDcP#c4Z>`h)zHj=in{tP21zUCmm<{+-~pyT&MF$8le7~PCNp5PTk zR1wfh=u6jK#!zRl7J02%qADYh6cWX-(d#`gy)>S(C#aG7i){9dX_~unZgBcnn&0&W z*DRA?t5F-@VE0HM)aZW~4p?LJ@<^*vjl^Fh_;*_|vYVs!4m4XKKV@xPpyfmzQ+f={ zg6GOTLGUIU|L;>ZqtHdlwFN4s0Cz$izhH4u{A=&Za7~f36q0i)zR_;d0aDDm{Y_1* z&`v+Jf;@#-x{}LF-`mivAN>#x1|9{ZC|`W%?P`I_{%^KgOzck&+Lt&a1H%tZW$^qD zH-|o@@}yOSi`WLqVqcc*Fy&~LqA1YV#!61pxYd*sDiGk7 zCg}&5EelfgphzSXhECY|o$|x1dsg`@$D^iOl%uWM%bhdSO5X%4YyA@~H=jYb>(^;D zR4Xka3%$#;s5+F!nQEuHLH$oU?uiZ)TkWTwWL~T?TL*!;UYt|4 z!2W|;b3{wWq#cR*-xkrft#0_**Tp}ABv=A4 z`~}7TsQ|_e$ffoUbzxE*jmjm1*O8KQO;d3$qNuI19B(*LF(G#xmobOpzcOn$ zD{9UzCt2_MXH695MUFB(6C0-Vxw?$uThp6VXn~brWrygPoTX3;$+rneAryr)y12uw z7xD#{w^9ROnVdp7gAJV*AW1q$79QjFzSI@>tyzPTWFjm3XtDAUv{K8E`i$?q#@Hx0 zdHdje?Wci)&ibxEE@_Wb>WV&(%wgJc_db1!YUW{}I`XV+4%DY#oYZGLhE{IMQB9(e zI3#TPPij7f0*sAm{|D+o6~Bga8ew!HEjmpts7?rWhu6-Mi!)qDE(Wl8pU=5Mn`Ou7 zF`TKYsK;=^f&|!t5PXL7V5udQZ1bqjt{8oW6Vl|6Dffxl0GRo{{LV9-|KI=W(N0vw z8m$Dy==cR=oy|m4vkg$fxRjJKHdAH3ATW#UYLLeX(xUqcx+`qvIKH;h7)Fd=z-DgY z$fb}gY$n41HhFpC^ab#k1*UUJdpGZG=5gf9rnNTn;}k_8cOY4Mlv-2@Hggz7R!$Td zhTy6W1tE?*M~}^1<>0`fqjSB zn-?D@3Heb+|7Ew${O|wm|NU?Ov%9js4QLveF>;5>Z)eGeankSB5z;+VPNv$SV@A?Rc&4SV6Z_@BB8!w(forMYpRAWPVNb;kj zu(ROe%yG_=-CQvG0(B^WA=6pR`Q0gip=eTQ8GTRy+j;Q?>J)2hQUH@g#Qs@Ne7ML7BA4OJ)xcDd;w_X;kyxYukvRxhScUE!6OS{MCl+OITXdoG_X* zN0;f`+S8ou^BDE=Gi3iAhwSLRgfgkGw2tiggV1iF0~0nguuN1E+AY+FK3zWXZ904C z=IAX-on~j9W*^}}qF7#w=%jw)g0aSSir=L&-4yK>+JPXo^-xz^pSG7b@@kM7Nu>I_ zx1A_oQbyKgI~T-L-~n>=5v^F=fELYZsrcS@&U6SiURrAF;%~l$j&O0-)&-U%y6n>h zmU-`XqV6FH;&pMtl2B`&G5Xw2AUY>@V)_uBJ#=%*Q<4NGRkl;;FNsr}e27k{#|9j- zA;lU$*iH!aUSU|D;&#p*wiE6m3r6h0r1J=LQl;%A8{&axgt~Mmg7pm}{Z0wvr9ClB zRqg9v(Cd<4v7eUrd(#-6(N!yZ*G+M1L zV{0~Jx~*hd?f>7*a0inh0TKbe%6d7Km!S3Q%J-5a;D`?ok9aL)hosj10$7-90b$ke zyuach7+96xDFC=wmEW00{KD$|PItlYoJa#pm!5Rz1ly7Bgh1b@Ya~i}PDbvkvE3=% zxnplUCEa<&?-YJvloCWVsmv}?a~?fLX8^X8io{u^LULP~JruALiB2GBQzy|YraOIi zx>Gz>aSg_rYfvc_%`H*Yak|s<(v$9-k>_;0DAS$(YP!?I_M|&U*sgRZdogPi&p2z%TxVMf1MAXbg&(iN4X;s*1uVN=jA&onB-wq*omdwrTvlglKNhogPSJl5R0v{DzlL(mxGb2g=UyrE&Wz0m!s6(Hw+xDuSV5Y=mz6eIl$Uk^{z0t%15%U38vuejRgFmEg3;2d z{7n>xl4`jQJJEOvX1sZHn7pY;pOBh#HP3k>5OtjAG`#5iP4-{1gZ;Ub_$#qGj~R5E zQEZOA>lK<&Ezcw)g?+lkvTbz)gv!GvAR!}r()-&`Z}60lN3B^L{c3Rq3IaT$dw5@4FY}I zca7*2JE<7e(N5Hr=OhW-!&pFc7BH%k)S4+!}YVG?02F%gr=g}Sy8DG0W=MR zo7!1XsS&Y{h^3u1Aa5*;%xTZad}HStJJIZc#t&6} z9b8Z{lr&?69e~fFi0QU^Z*4JqpBOtYw-dqpRMv<-qMeALyLl>h4p#)?q1gch zeW$7`{GYj7TjfRj#jNM#KQCsueM2?`XwL#5>B{=p{hj z*!e{4gvU9;>aY{778`}BHoub&=giB?_?_lbtw^HvO&fbIL)YkcqEz3m)%oLMr^`i3 zHGb#Vo$rL-iC$q>(=7jX`OY_XJ_kEF*b6I6=Xd)48SIWMj=td(frbFgjLi9AVy;x_F3QF)#6nKK#hvfnA>S&0Znr{gG%7ivZD2)M=vb8TsL;wsf7V|EZ6zOnQklWyds}etQA49Q&lVCGv5lOzOl24opSqO zH}3FTVJBnuu3pUPTFm~&&L?6gSi@bTgvo~g+QEtcfKkGvdAg_OJI$3|Ogf55sTeUk zq~{`RBX)-3OGN>_fZ&opd`HxvN_;-_ZF)=)6#7hucZ}^fJ38 zf1BR%5)Ht32ofnGi zNo6y@((9CD=TdlYgH9-zZy)>{I!ntN!+;H}3OeQSdJM?biFN`y(d_58+`SX8lWUu! zG2fz{pBOsnZ+6Wn8vDJ@3p0wotJis@AG4?f(lMfl`DKmnoCNn&j34o*y+ovo{d0xR z*bSY~JjYOBT~84L_UL#~L1!o@qcn3i97Ct{eJoa2V;2-k zRtKHb1Dbfz)z}@1>z)@CbaH5*hgCr*+#cZ+j8#s-w-}8{0g#E8XF}(dc1#GuWA=I= zEnXNyQCPuoYHcYpR1Nw19#PcRQZ!*6du=0@qUGhOUgw265hM0R>J$Ob#ib~0D8Iket|q7rnXP&C16pwpp56kt`*$!Kce zMFpL#5N#(H{uqU#2>T+1BFY_OoQtlZh|r04_Sz8TZ_$iN%p?i!xdYiRq&p|^@FoYf zckq)Y2`MM(5Sl_GcFrOpFiV&-@5@W?kbR4teM5!C;RJozsj!o)yGQgmVW(liXwYKk zJ7n()**TZJwzU3yhHa!N8@xO<-8o%Jca9&G?i9IWiT$Vjc(ylot_ezzXo#>H>|`T* z$B;J?lpM8>b?MH_L*Cxl`LuNB8#`6$&MVkyLl&RQ&nP>Gq-P^`j+4tk_?_-N@H^4S z-XowSaXxtUTl_omJDKO~5KvmwKdv;gztf$q*!dCZ&OYHzicr9+ursO7y`FIA6?SK7 z$eYCM${}y#h)idIZNknUwx>Y!OIA)`#RAjni_C*Awx6JeL&%@43 zA$y6TH0nck)-R;iezR}rJPp}<*qx?3-AV1aKnAl;w=-O3cmANz`C9r(0L>ptKk33~ z;j(@b8Zj~GtyS_^51l`5l^tB`8CKuj1^>O?_EQ9%k-H;aWX`0FLj>QB?Gf}Gyj+lIP(u!iNP&ySof^t%IEd=GLm*V$Jm zn#*26d!5K(I+43qoaCZHPB-7PocFaMR#zv2UJANct4eGiUMDgr5Y4>k>O>cY6s4A; z5mtqq=plsLRGV5|Ybio3b0W@FYbo+&PQf=tPII{#6W!`FEkIEEDyvg2E9|66`~oR- z5Bos7gq-pRg1qFL1#*gZ%fkJpnXU zn@@{Ar)-@w=3B+*1j&1VRUv2UQ;WQ)kQ3pMMJCBUT#0Xroc5#I*e6){oNQxvu#Lzm z+j)+(EyxMt?otW_n#wDeXg#z=>wda#t6)9sDV z)o45F>yo1wt71`=`Z}U@M*^GD zJR#3{WuP#f^8{5FkW(;I2u`zU;Uxu;NeWU(51eI8hNnbGe%g7iMW55lwi2?m7q#Y3 zkDM6#+B1xueV842PM0PL^P=)OFKQisf;=Z!@u~{ZOXfL~w|P9Qy5e)j?r1%w&pB6E zSs`MW9(j2pa$cG1HcmcUAMgetJT=3%mWb}VdJ?_)X>Ni}!RsJy>dgW=r8em0clq(G zuFpiLL~)X5z1dfQPKO3#OwI0@>(-Iz99aIOo_7x~sayTSAi;XOOr94dbi&^?1t14_o=%myNy0=u&xs00dyr`gaIifZvl_t@N@mIQV9bGW!EgY2LI=d{`>#G#( zq_=5!d1APJX(XngRE)HM&Pkr0pkUmiU?tNz-V=_)5MW#4^#Sy!B=LzD2`68gmDCik zJBids*jIo~aFtKEBW36;MxUDM`f)DmSg?~}dq)@MJ6?ZQynaRf0|N05Rt24yj&XJ{ z*StN^PE~~_o%bAqo5U<-T1=$#{&l0Ie*e0h_po3K*fVP*4k(W@`k4>4* z7j!z|2%ShOesrcYmDPKy>xkF8dobVe`t#!TE3=8H4-czC&MOl!m;Uw0%M+c>E6B;L zW*WIJKSSTTz*jtlujF%zF7+%f{~TIG;)6`sdAMF{G!3v#$Qe;rM~!`W3FI^le!&rP z_VALJgbKWeX}a$9FgNpQ_3{RnZ~w6UR21* zNtmgB;HjC;3(%Rg`BLw|DvqvccvRYmY!OKgDV+k7lDxZFIGvof0Xd~6=rp4=5KR;8 zD?q11-mQbuNx7r|+mq=$9$9$QyiNo)bC2)`QeiV9(YYooaWY@y*}@;__UaP;VDj$y z!XG0j29zn!s8w5t?+B4LK*C|xLAdbn+z5sNNGFW3bd9VRGqsZ|kT^5bk z>9MLkj&@)33(A>JOq{WEy6C-5gFxNh6RmPlL8lE+nv1YKna&fEF@mui5h2hQ}zPz@bmTafeK$Y~^RDE0-AGsy9B##k;hlMsDEb56&GzfvQ@ zRyLNGp7Q#P6z9N;GSdkjyoXgGCoyw^)gfnbICfj66Xz6Md|#bP{tZ-)$w@jMdR1{c z0Ro%)Y@5>=TNuMNrxPjNKvMh@MhP#-c|{;TbxWj~7+@yJ)5C0F^Udh+>_n6-Yhad@ z(l(s`de*}Pr&9{+ckYSUmw--4GoYPFC)9~am^}jV)So>TW;h-t+%FLCCUg+_$crx3 z>E#s<6RZk4M`WTl!**JrGl9r4Q>P4_fD#X#DDQRU_2hj;UUbkoG#twZvL6oxAQf~r zNh6#z5`7QoG*`UNQ1v=hbBQK_yV=pUKquud5`v&ggkJUmw$1C59VN7tJ4NyppcD1= zo+=SQ6V%Si>OQU#9jnkDk950GC7Q(RygQCRWu9XrbRs1)!|I?@-j6Wv#(Fn*@uL(I zJNCjV(1}1DP2IjWe6$9gc-*AY*7fj<(1|p9vMT6AYwuR`tO+_fePFq0ppyzw7A~uG z&*@%gmFUVyH!i9)#|g)6u^a28N<<0CO)Pm>B|;fJwW@=fB$6MT&)znLJ)l11VP66| zUANa6yP=a+BC_vv0Xya4$xs@#(D~X`qAOF_pI;?Pq@=IC)FkBLx4G~W=)6Wv!cnoC z82E%L(S9`;W6L`O(HKbNgzGBCgi-Y?z`sOFgn-<M;cD;UzH!|8m};oF_gOLX|l3dcBOu842??iZz;^Rvo zCj>e{?d%c$=pl86?o4MA{^<5O-^lqy+GYpymTPvyOBtNoR=DjFamRi?TFT?c>c^mn7C2Q%Ci2M(fS4C zOie=(7RZT-mhuSWd{(DPjYNWZ^Xy?;kW(mgL5LqWyAC$C?$~jONb2gr!oC7>GSAr~ z4G*6a*-llo&P9DmY>rdddvrhEjYJCMywXU-=5<Mya`q)@p z7t9=`#6Au$(MLqtkK@%{Mo!m_oUVmAa@d0T5y<(LhX2OMN%7Y%UXo-uXUH5Y2MC82 z!te<%i2(XcGW->pPKd%o+cdBP6LU#~oS~y+(uiDS$Fy=)k1<*-1QgTp?nKy(d}+3;rH(|CB}CjkKic zDlKV%RUzj~(vrBUy7HX4?Bw(EoD9>SD*HiN(v|VS(EV82t`Ne@n!#+1v9UyiVQ^7e z(W7lD5eb7VQR12CluUt_5Z+Hs&}rhmdEJU%Vqc;IlZ2!$g=5T!K)O>m$qjW+Kk%YT zbkgbM6ycu9>pvPTDe;k>PD|pfmSf7>k=ERn{Mr_-^I-P8=$uY6It?#Rgw6}dS?<7u ze5Q^IKca!i!!{My)k|_IeVetA^;sf!zxSOaHO|8{+sfbU~K{-t= zTzHl|(IPjF#0H=O5_)YNn4>fhiC=QFuK=BxBmw|+DuH96eeG0Hni!qvkxSG&mDt=w z#iVr6L#KrNcfF5^7Zr3~lKr?a%I!LIK3(=>X-@lk)S`Cebap}KwHi_QZj8N=_%IYD8E#osx1*GRJL#Ng@sJV}yML zUeb5SbY7ADV6&w-Gm!%AX^I=7_OqZlL8myYWp$?%ft6jbr?tb>VKb5eVq zJ?tw$ClroPXm>~RgE1+m!tVJ7MIw$|=NRFhc-@YeM3gQ{=p6eMlf-A-PQPn|PE680 zChAn6liF*B7Zr3)c+QjOMdx%vjVlf1Rym!JK%8N_oX+Fv)F_xroD4{X;!K__d2fKbFGrLp)6bo!1nO5!852*LaS?u@mULqBX}z zJ)Jb&$T^GmI(ym{r&DrBVZy9vj@4jxdjl%RoK6|#Hh|gr8fQb@a(YUi z$nc_z*RiUObrFs-on4&HYw^1MZfy7~H6jmz4FmgS&5$2q8`Nf$lpPrw{-?LU=9JF(nW=wtX5F6yho(-&4yR_oR`?}*g6+f zKb}1Vb5Z^H4!!GFL^|V$=1aJl4A&*YGYzzj&?#M<8rcsB3`C(RMshmGfETwRgB&-n zi}-DrVP66|Q3BnJ4ry;Bf*$I2fi^+sNvp?EBN4|4-!6LSd=ry2PUjV3lCWHu?i_XH zb*Ra7HLs^83&)Gj>13Qf@bX0Hydn*sO6fB!ptEa$uoN!lk+!KuBt>*dvU(<2y}Z6u zDQb$>y_GO74zRBPoh+~SOu+=3bAs(Cub=n@73lPr0<6#BzMEB#V&^cU(PUJT>ba)Wq2iQjFq-0WnZ3)4Hq>o0-%Oo!6L2av%qcywXX-Q}_dST^qnu zfzGDE12yQxx(dvAx+g;Cm3SQq&AfXZe%q(1xhCcKiI^srgVOSMk353 zucb!*oEnKPbgy5KhEJWnyy%eg+jX!1^4Gur?Qj3ZZ-Ddv4gL@R{vZEkoV883`SUOT z@E89o2qA8{l^M-Za_-0mCy~ z^%XPfUXPQKxfAx#&2mr4F)Uxx@A`n3*W=~r^0EOuH-HyM-W%HUyZQUy*?+N{oB6%5 z_h?gfA4XhTBd+buep&4XKH&N?lSg2sRA5;u;Lqf-*x0*inlSc3G}VqW?~=rA(eY8C24CC_5t+*Y~u?l-iUT(VNFl8 z_%<$NFRA)M;PfGpVUoFCo*oIrHlM(x9g5`b4NBMt-3p@SxU351hDmm$( zC+-Y5&}P{BjmSpXlh0@#k8FGRlD2=J*xuQl0sUV~kF zEd4uu((Vw+jk^ISNjlM{!gk%=h!cvaldPO0&)r6RD8gQNA(Qrn6c$$Sg#)edLV(Q< zmLLImz*A~RLUQ9?yehA9wSb&*NAFw zHhZiSZ2d;$xyuRUcmg>|BRWa{INy3B#mzn|H@g5YU8?~%Vg!hcFon%-j@DzdJ7k6e zEH^t&l?dB*9+qB+QG%9})7wdQ(M@Tu%g^L|xY_D`&}oL-n0A-@pci7aE_^7&xDJR6 zC$@SX5}Jf-3)u>jcAV%#JPAc9F4Q}BNZ7fBeh#2H)1Z`h}Am3%=)A{0=}Wi zzG3woL82ukcvk`Y;t+SAht??XgE_ero3C7`#TTq5P?!UPG^d{OHEh!mk@)uiS_-VrM}__y~@Cgyh)gL0%y~w0q#DhXTj(N;IM^ zzi|OAZq+&(Nx^UJJe0zT_q3?*7@UU=_R5WD4|YU>`HcW~k(Ag8Fg)G}LrYq|%%SiM zx^6^!uw!Fy_6Q>-*t&-TKV*Vs#Z8!nhW5&hXyZf4dGf2<6yzZkcd*qPktop1_P$x3 zheN?j>$(y3!Hyl9f?B*KfDZO;{YJ1mMo1px8F+!ZtrT6?d8j?uH@Q(9>~m8%f}9>- zAH6h`CfX}J)f;izgPoN^&mJ*B z|BZO%ap=WO^%5m|GB>zYXT&LWmrC@*PezG>f@+}lD2>|V8i_^B;w(T!7H2BRW}Kgt-Vq{^y+rBIiM_X zMs5QCH9ttjuUA$SiZ4XXG9@nzHe(7TvQOnck|P#ic^{$Ug%oc@OVR>`sZ^9*mP|Dj zH16M}mMT!)>e}EC?g>g|T;{2Ap2|M8``{LuVKbVyE)!JRAwe68kUomMXIK^3;oF<} zfNciZRc*j#uc+RaX1B*3l{ zZ0ET-pg~r6M0xlF&h?;meZlGxpUH6^OiCM|?p%K(tlDPeLByIL@kW%cZ<$Gg<(8Mp z3wuO%f}veiP*KHl^M!ML)G`GONF(bUV~S6}XRN;v(gxw+WSr&YCH23Mu@8M^i@GU6 zC`ySbFI{^fKIf&a<1rm8sB|8VTJ#+NPzc%+1<+)!VD&sK_%>jqY+8YO_WGzrUpR|1 znm>ljT}ssQ+KsSBV}#|Z1p3nUds^E51a5@o53hqNgj)vk*mkyxQB_Ubdq-Mb?tG8HfEI1xJ8nuHN)1!bqUlh?aD!UIBpmAy7oBa z=1kE8qC-^H^M19$afoPm&C?>gpnb2`wn$X-&CG6PCB7MLeT$$5ktM?zh9o{=_h}fl z)dYE*M!u3sq=m*-B)*T-Sb`HWWcSv;L$s|g$%RK9ddw=a>1S2<1nI<_+=LA`z+PBb z>huXh?o?X5`F`_OI>X(wVvaY*e6G5cB7TSSvMvW!_k^#R_Zx}~aA`@^C?Z8{{oE5$3g z5o9X!++@!V(e_li02d_dv%paX7p0ylC0k~qU8RAvv3lu7X6>Oa@4^o_4uq+O@;nPSC1B)~qe#GS!>aVvWxn;cChOAc6cuO5QV={JIV)d)|lEdAIvQ z6GPU8G*AtvmUB&Um*b^{*)1BgGmHxS!+fr1E!_gbo`ZC*Gc+H1N;hpG5Q+f{26)7#x%hC z@mFen<;z!+fNc;*cwnYz5J(#)+Vih;qOH@+NlV%~h?C&F%&9Xv6!z26cRCi=(a_8A zpd@}ZvaL<>uVkwjOIz9;Sc<||F+vS6qy`uP@rU1e?Y%dX%$D~)kNevZkNl&SVl!QA z*|73*jkuwPZm5wQ+2d!8uf6`I6e&M^DS=@#(lTDlTQjP!T@Kbf)+5H^H?(kcj-PRB z^qHP9^T&CgKaSi*%Ie}*YISCouf*(d)~+5P5#(X7ekJ|UfkOjmjhAjD?_-2^VVaw2 z3jxu6I_T%dwmFDH)c9oIoy^Ya6`OVDY;@$Tq2aUiqR ztI2HFM)A{Su~eQ{?70tZ4-tZ&rACJ+GY_Gw?*n||)Ci1U2QE$C{Hb@q2Xz$yfkf^_ zgZj-BO+7gX^^#l`#|?##_CS`l3_xJY2~rHtP9i(X7G!iLlnz-B9a{B$N-Im9KKCV6 z0!hIvWRl8_cn>!047;lCe*l$d(B_?)g2}tJSv^bqgW4P6wodth)fQ=wQR_=fErB)d z_Xs<0aviI}X^8Yq)*sDYmu4-m8fHbcR0g_EGls4NKA?rTdfu6o6K2d)K2Cl%AuD&G zS$ohX(8=^#SY4}J<*9f{N%tfuvugDlQJ(5vf+04{*+f~B?Ti0Y&!BGw99A!QqkGb^ zvL-FDm6~L0&IB7`PrK)#Nw$3FRXS<}2=u3;26Z7I7P9#isy)*rW7AVo#aN&8SNn&C zN!`7PJ)SYdu;xMb+Rc_+9fojhQi}~XjnjEq)eWMp1EBdbh|?ITNk-{-jNYirTJqpq z)M_6;({_23R+d^N4$zrp!FdF1Iu{EiCd8?r8}g&@9yd~wU2jC&ng&;7Lp}tp=&ZvT z>ML2#ISGmAb8cybs^5s3k(8HVfLU1Lscv7p5eE;;!m{rM1cg*~>fY=6(hOV-REv_Y z1cq16AS^^wfQiH;!(O-9N#B1TS}zL><4k^#zA(=0-8{)Hg?&Q|=;?VZxr^G`OcJ|D z2Omzksp*Bl>tBdu>tC1mP<0%J+S&|L4mrn`dXPESpm2!Dcg{rF60Z`RzY9CvXk`@H z>4#0r_>OsqO`BZ7U4-A8D&Tk_uCOS(Zba?(f*6%zIV>4`50H!Mp`pAuFaOMssZ|gi zkeAgZ%%IJlP#-NRN#JKtOM~u2^)w6^b0n{HWXp~hwDO1w<_o8xQ43qLX*O$8rtfsp zPMZi98E=t9($u`&4O&L6QbgW;gym+(nUZLpRsW<^JA-SJ$O}!NRlE;v!gt6OqSndI zJpH`C4T9TpgYJlTD6aaS(%OuS=2ctr%-Lf%gjZAAZ3{3@A~(;R_()!FXA19to%Ww zx_7jg(p&HK6dR_Vkqd7`TiyvIp~9~D!qg0|pCarJN%dZQ6rBi3v$OjY(TZfSu7pZv zNPJ<_gjun0ig4&bJ^-+1Woab<*rA!{;2DOWDf=*}Pk!abUb~Nw4>MV+@ z3l0*^i`Y-~MgUe>Vvd^&<@yUcGIye$(qSxgzqb{n3DFseCdG?s$6dG)wIoBqePzAv zMA;|pk*wdGzNT(UR_R96g~JJ*$Y~dth&G``SC|M%9P!PFxN4Y-r=QqZxRIz^TD4e2JtvEiQ`QvAm321zazhAMIgC1z zK=D4b1vluG3@E$teQ*!ww6_AS3B5NN$u}y;BUdNl4V{90Ymc#Uhwy$my(ld#a5!|@ z62%+Q?hvNeGSw2CaHkn92(RVOfI0n?j_JlMt1XKpF_>(04(OuGV2Y{_kBoN;&FcqH z*NyazBh4rDv0LqI0vkM-ykC&MO$tyhEG=~+s8q~FA}A+;7ZO2vlOuj+G7M}2tCcp{tK0{P9a-|FT&(MQA=*?B z%L({Sss0Bhe1xr+6Xc(P^61kr4bc2Y*b6tJoynBwFgZV|q~2Pi^yj+tNcwIlsa-ds zWzvMg7V)`mQFV*t#In_mY&15yZbUtl2`p=nGP6l?r*DK*n{2YG%k?UHgAuD8oI}P& z-b}<6y}a5~%UVN548w70;5dQveiAI8s?hPpXzscS3}QE_u5k({+_L2(uT_;{hqC^72PgRutazP z7TQ4~2!UA2MAkF-2RHJMzy9rS|LS+UTlx8SfB4To{o5b>AKDK0zx86(Ozh!Q_1sDj;A1h#+r_G`@TpZTvhdjlP@w_lSz&fBN|>F59P z^DqDHZ~psl{^oD->;C7@zutYPzg%S^VACJxzfONU{p(R6e6i_Y|Ko4|>G%Ke_}#z$ zvj00#N>I_!Za$g*PVtlCtw#wy;!-;Q%m4oOfA{O7Kl#(0H#>g)>E2kAF8OEcfAlB7 z(NAz9a7my2-EaQp@BjHXzx!X0&)~&ue}$1w>D%SrM}bTEs~10R#3#PJ+?#(aw(_X| z@i&DhHp(I!C1E+n?ORH>UH+(qr%_ly@xcPhzj5J{Kf(XMUv6$DF6F0P{_wpbBbSkv z+Wr1q_|ic=K8?Bio{_vU{0pOiJ>urxd`mHRDz_&!zbCnU^pscbwh zj>UUlgtWVH)AZwJlx$LzlP&UOixL_{dG>KP>a~KKv$$BZoN4nedtJuO`+Eu!l>|m5 zLDH5%ASLW{70S4I`@=>!_F`WEH-os8<3Ovx%~1lmQCx~~3<})5=R$r$D&ePfE};cC zEq28{82BlR2Hv>&>2PxtpJ$XB!1x$=+Ju`D?~LOAjIpw~D!7TSe0SGzQQ@Y;{o94+Q&L$`>N}B&C{gxx6#R(Ow(eEK&FSv;4L95q+k%@!#{i2k7Yd@#qTY>> zE8?b~#ozP>_62Zrlvrz&Xk&cvg<5b^7zCq`BgY3hvIRFMuIz~y4Q_fY?9uSjgPTqO z(??#ExH!6?EW&~goJ}cgR4L5O2&5;+CzezVFz^ZUF;Dnf9 zRk(>8z2|3fQQ@WmV2+-br{U&w0XGqi%lQ=9Mj0jT8zr|Dce$-&e>2jy;HJ<sW!%J4mSs84l{Zw&Z^F^EGcUUQ zCIB;}%k%P^R}!2;1&Z<|B4>t0*_cuCk8wwlssZO{?;-l_A&6~qIOXk1!85S@Nmo-C zqkbpXR0d9zgiM5e1>lU`!07>;4px=mBw|`#R1T*vXP`8|X@Ho4moDH$nzITdW#EjZ ztX&&$O734)X&h=mQUOlnLp<@bl1{DxCm#1a@uCAxsTw4!15SBJGs;6chtt8+TrN7` z#0e2bUY-Y>_5yIqCX5nbN47jiVWvbO&c@x4!WwW&qH%CDtRhmMUR8iLx@dqC`ynMdANTq~z&XPH`2#1*tp-*XskeC8l}H`S z$~#_kkvcr=k$LndR@B{r&Qo)saniCNrxhEO84Z0 zb|k=wIg(PF@>5%BXp;Tp0_+O_CyVJK{V>{E8tR}lB>cQ_3x3DI8JXfVyr@b;rpy&l z0Oy?vWrVYeixN2H)595~gKUl}-CQhpWSoPn6>q61FUSx}#LJI=*1 zaLS<^gmxMxU5ZoUyu?G)0VfF?NP@3qGMj*tjEy+(@;uiDn_2WxSsQ}KiM!Tuk>FvcMdoxlPE(<5e0$&w zSI9^bi6CHSYgiQAic(LKVR52@zA)X9_mm)A zqUN|$FR6762`O=ss`}JaRX_4L6`}gQW5I|xr=d9Krw7geuE;Ud?!e;&d~R#CCmyG7 z;fqu}PPm%r8nQiILncT$-431?6>wU62Tm)=>{Te&1e{X*9EGMa`f8QA_)$sqkD_F7 zvnt?(6XkK@+%78Mi~_fJ5gJ@{#Ub%LB!Ub<$9~6BW*echYY6ADWqVnTMNlaY`Em;V z+XLq%8Yd1^9ImXYI}kWMY#VT*mNW?;bh2By*CKF=WBW+Q$j{{E1t}hfQwAx3bGiek zw+8kVfYVQztE~Y}fdK~^Xr*3J22N{Rf~hiak}txL%5>y7-@y4S;FL65kT$7MZ<8u} zoS-B1v|BQsA?MBO+AYa;3(TZ{gHU}d9gu+Y0*`Z&P-YVEa$?itB#Uhl;G9~4a~8Cn zB{4eh6QjjY9WGZY0Irxif?eUXWeLDJ-it$Cc%1$ck8=@=g*^k#lxfWKjV-|Gz_PQj z9UkWf23mk~K*7_@yeNRvkXVSqk{#3@=bhy%aoCK?={)NCEsgY~S;@)RT{Z0(IHfJE zcD$YRTcVzh%wHudTgE;I4(3_6K@B)rCGotdfK%WkNK6uZl|@j`agHU{%^b=p^eS*BHQuie>Qk4;X|IIp8}AaKx}-TqWItPToTCv2r-y9;PJ*O^<$E7W z@BJ{xi3AwhF6Y!bu)^zhcyE)%1}K@kZxgh9w)qW5338+k@HKUVX9Ca zF*JeK|YU;WUmn5 zJ=mH77QiXda}-32yXl!#;FRp9rZ`0J60rq&oNU9KVVi){Nm(d5*p~oK^mQPOuafu> zA*+<>RMC+P()W(3PEF^KAr%|Sa(3wG9C`!ivw#!%FOrg!9_Q4M)2+~vfS4)OSy^4R z94GrLW?r5LoR5kvv7`s$XOE`bn~u~DoY&|`p&<=)pz+bytDctC z6>X%z8qxE#k?a+b4~OigfhBOFOFh6g0%wSl-9)CdsdETX1^rI;s$+cgBK*+;oWtD_ zxudYymjF)aHg{CjrO#`0fKL@2$&jKPc~Rv!5u?M6TDgnw9OpO8arOcy4&@QHqc|i? zrZFh1>O7VsFFN2PTf_76G~jf@r%->t|DsvW=lQX>4y)=zh94lngVl*<%qAY^{T~|% zPQ<3yDrCxCPL{4j$0w(vrv7!&^g4~W0-h( z9&mmNRXM>;S*G(|)~JM=@`)|~T{J#)t?Ck^Lj&Hug2OomWRW&Re0x>d=fyPM1kwb0Ta`($6zVPJKG9 zYbV&0Uo^{+HSbwO#W-D3n<$fTl6Mk+N3`CQ;JlN$5|z`vh`R~F#0ggAZqB{#rZL@d zdScmec@I78_jhHe9X79()WsJ;K;v}mcSz1iZFk%%8Jxf-$5Aa8T}ho?X%jEs9yV{F z>8@*hAS##8_-5&GcIdyyS$Ie?xM;F%G)|MHvEhXRP8IWp5*sPNz65k4QunYb=)^P` z3)>N??`EwvL8o9QOGM_ub|KSY3)!9@R{%f=+mg4vLyC=sGUhs{TY8=K`HqVs)@JC2ovlp+|AoBSMu^PS7Iq zA-YK3!L}eL%R&woPA6v#ft1wLIppOJ2S_&h*WhsiGZPO>kDNU@PKtAr&Z(m#*~>Z3 z8Rhg4cu~gc)72d3M!{5*Ck!^!rrD&$0A=W)?Fok&V}wyZy) zIJ6+=mD#|YUxTgzwhl?S{+N5&RvnUcHcNCg?_>O8xDK{E;tL|@1VK*ZI@@Mv5IFMe3X z6+RMlPazlNt8zgVzT7AepyFRoa z=Xk~E%pVtgPI#L*f?B&S!G1@5y-gsA<-Y(+`NeLo~F=5>%KeB zN$oE#@ycGVAm@Mt=fq1-W&O=aYDdmX(YiPtkl^w?&v1@1xZ{o{02V>% zzAu2B@HS6mY|7C(X&?ZA%93v$M9LT5X2ULtg+ABlQWk6*`3r?*X7qyd;Je zGc4ZxW_WN5bYkw%>|kF3I+4de@eImdXXuUBZ3@(T;&pp9UN_?m%$#^pLgy@?>0x!y ziDw0wla$#Oj_joFEjSElA^t|YxlOpgFFHiG28>Ud#;&r;4$MS`rX8O<#HO=+; zLj=tUme2`RP6yivosuY-WVuayLC;dEQ||pShXQUDD#x4g}n%|*V)rX^uu|b zD6cPsVp0<`$wKu#_1Q|UQyRz;C%$b0 zkw>m`hJ6L-WL5$rKUJL0L88Y2!-h43G!`L=ZRw#UV4u)|IeA{*(D`|x^TL#M56zFB z2}G$p)F*39GUvA&-BzuyUxH3dQU>jOKMW@uGxInR+=#SRHgC%V}VB z0eex^sx4rLDivh-y{Q~jHR!~1=J3niu=Hc-Wa$8LjgFcW@`|wvI*|wR6o%Ky%%!Q9 zWW_(n>ok|4a~A5w?0|cSnrDNbp{cSd*J*w=$W+2XruPn06Lg}u4~EjfP9ktTM`-^x zm5J`dS)pMD3A0y#PGq8vr(u_KofxBGU{%n`Y!sD~bh;nJ%*e~z>-@xCXDDqT#W0O7 zKD?W*aFf0VA0A$(z0`yW3FCa$Ix?TSS?fYeqEMaPi5-=o6THTaxG{t~72?KDsPIlE zU%J3Un?^SWUo=Rw7Q-Fq&ManMOqFGcO&`8Q^XXBQMG_k$`42usY}z z*U>{bsR|`!=!66Yrt{PWnpL0^O_+wtNxE?wY1X>sMFpK{Xe_KQ*D0q=q}Am*shNE| zkh)eT;^el8mnV9iSB3_o|MDRQ4PK`N@sfm$k80UTu2XoOlO#x|eS)+Iov5v+X;Xks z)Yd(0lh--f7t=RRN!}jlL=(XTtMNJq+fPm+X2SV2b4S1~6BnQfh>Hq3$vl%Y((hUb zPM{P1<^bDMVc)dAKd-_bdC`@LIQ0@%1)azPN!eqJN}gS?H@tUq{G!cc+Zx@Wj3Xa#9OyhE>Ju zV|S{vsl)hqhT8>+;~)Z^W{$ilolc3@#|c)2oFH_H62@3p!YDhPh+mJD(ko6UAQMm9 zSNplk$eFy&krx$m2Bguu#;qeWf%8J=bS5dTzH#eRn+v==5jo8T>5nwy&%hEoA#t3j zo{i8c?k2{ryB+8ip%b;B2n*;Gy!P@`Rnic2D~X&`F`r)J3JQ67?|R(-b0J zRM6=!GvX(fhb%A3RHyrz&d7td#5W^;cnD|1>f-g#AFnf(VcUhWfqnjNPN%sray=!5 zbJZmAH?Z&a5Fh2RQbA`iUKc97 z_+x%Q6YkF>UcXQz5)Y`WNQA|GGWy_nB$4Ok?R0)#r!$eHzaFV09QG1z=7p+yi7s`p zKd+bQ0i9Q>M3DH1v|k=9BXuv4kU$l^L`Ts1XP)Y8nH%%b)7*T2eH{{LS5%IFROlox zzE(B)7O76CarMs+?(;gC24ZMaA-ozLrFe?aFI-6Rgew6K6q`BG7WoETaIb}5%n z@{1}+05&vNA@p$;aq1WkQbzbKMR;R%z5$ouDj!%TnD_xid1)+R|Fi1(d5yEmf zKgPJXAg5GGmN6QFoTB&Qh3@G?Tajpx>FdtJz5;Ug7m51o>nYXQHO_6kOig+t=d+Nr zWo=cE6PVdU>bx>qmjvJ6`|1sm{w&iB9FX#DJq8G%NF;oCU44BP`nIJ|!H37R2UnZ+aHtS((?yS*E=u>MOo)_=3OPLnM0ZWX9MK+w zfjdgy7Cw~$%Mz;E2U~u-c+bUP7>ise^WML z;-m=a@=T}m3UuO3jsr|MDnezL{gWlR+bKmL?i5%Za#c?xgrtrP{*9*BT{F- zLVVvSOnRH_#q8-{e>+!u8FJY57@SClRVc z9<~WNftgU4n~0o29j-Ie8DL)mIZ*=b8R#b47)#t$c!nP?nzXbKUC^8RK}nsC7Zq|| zBXwRKzkZ^xcbw_$E3donS6;tTB$6}cF^CN)2$4<;+nDJT@uOLgcpjQ&Ye2DbIUfP1 zCUZnvpi?wIoJ_>L*;jy03Y%;Oh%`WF5TAaOhdgd)wVpVgjQ$)i8mALpkeLE6?;_FX zEfP_r6C-7H{p&bimZm}tbV4i6VJMs14v9X2PR<{A;zYLxbY9S#OS4iPET9uicqz9< zw{swC^>tR(zqZ!bKdgWK_2TuGME(aiVJ4O1<2JdYc>Pj+{RfTLzXPe0st8|?v=I*L z>*!+FL8oadL4H1F(xr)RCT3|()Ys)_qQVT4-4odozud$Kqtg+oj4}< z{PYVzCrO>xPZ%11~z{q{y-3MVIQtsyfz2I7)T) zO<)f#l;Pu9nBOB_ztFz^VM?8|I8w7n`p^5B7)9hnRulXrHWESeL!;E`Ws30Kfi>($ z`uxa=b=^}WLU{BmkWwb8dCSvwIJ+p?KQXP^JeDi*2dl5N5gbnXUU}l7U3FLI$J|~b9lZh&{ zyF=vc8|Oyk?AJ_k6CpG3qD0Oyd&Mf`jHM8?4LK2rf%IGxuB;#@GMqm0qC-wNUkqYr zU9^5hGim5Y&P(0v-w!!2G_QYHiD;HzG0W}D`#8IZoMQnw)x;z}nwLXP+u#=*l!$uN z=GaHnqc-;egD~I7`6T3|Cd~G1Z9+~oUv}wq!cF!#TX$nqPLPweq3_X0bfrQ>%uFE( zqIF;<@UyXbox?LF!7_)oJSRGcE|TG2u#X5@NhiG?2hHoAR+Z<3JK)kqg`98-P?)#2 zBhUFp&S&|Yq--3|Y&lX)>YBcOr9zZsV4pY#^N*JuPNaX9QwHHXc=2g2W?Oj(IZ??e z#j&M_C`f)Fh!1tMfK3@3?S+%(1=6!)<|0 z;^jE-qA3r7VPmm3tm)|?8bL<7|0cO8%R@4AJz7{@Vf_c|A(FoHATx!+q@;7=fJjQ` z8rUR{bL1k^h3ahU4HGZl9yWje-BsL76M|DZQ+_rA0!P?JcN31L^jpkx)7W)t38r`z zBqia74;Z!46sX_DmW*JL*jKt;T_pLl}3vQ0)JO@?A%?L-6 z1=}s#?AYF`4Aa>@lrB%h%?mWnC}DD%odI3 z(@-4)+}^nPEZj_O6{?A(!0Q zbP0dtc)-P@%}5QZQL|(Jw%&TN!F>) zjZ}I=n$yj&uK=BryblJGL^RMDFrq$L4Rk`{XkT+ss3a|y4(McE$OK+=UZ*sM`Eh_% zK_}-ddsrQGqNa4*zg>Y&HmVz5bkK=1GXew~m0gzr%`P?)2?Sq{Xap6nGhXpJIWCw8 z`hwygjuONR7RGp1rb*BVkq?<4H0|dH6`>OaW?Cj{aAbOH|f{j`?u6HD0IeV*}q)!$?}nwG0MTL{4yH%rx_&hfWiq@iC0NsG!r@ zQMgD3R_Aqs^tzGIZ(}40-a?^ss+?0bMiMb|=0yjcY*?p6XO)5V(al2~ec3~Sw@n&c zpJw3t4K>Ymud`GnlE)tek%bxBlSK(`0+bHr@aiFiL?e?145^4?I?Ah=vsO3 z64*=mU5@_>k6D( z)bD!wdM8q!ae`9!nG)-7Gr?AG1RFufC3o_e{7foUPTsO>+3Hoyvf3>onKvtb zk@W-~IjF4^-mE>?A^=(g`(<^u0)m&6OUKHx+La~8pp#|pxXhhUC!BaJZr+x`ANL{b zK_}7$Zpb{%fVbRus2A@eD&L1N!QFtb6uGeEJ_M0m-8pe1mXwDj_R2@OyzGS?VwHy> z1xe%>zFB-52$x9eW0lO?-3Z-$IKSx-$z9?87ov50#Rs?2erwr&%hw|S>~^vRTgb}1 zlLQj$NUG~ToYNlaVdwJkIA5Tsy0GMSMdiZH>7zig5%$8ua!PlRn^FiuH_PoRw{R91 zI){^DhW)bs8D7hkL)~e&x;#QF9f5Wp)+h6690KSSr_pjWn)P1iF4o_Oa*KE=FL=qW zdCC_9hP<@$_}z5i)mF!b2Ee6Lef${g_3FSdWQP|bbp)*=Z0$b0M7UnE6+UGv1p8dX zM!9ky$}`;wv(q^wP!jIM%wbV@iz#X1VK3Z=*6T$u3n$)laUhi-ECRP{#(mre@S1)u zj}X4Z3AR7L^;+mR_81J{L4T8%dokR|2OzQ{QH0WmvOGuKlz8h_*W^0 z43fneWWnF8e5FD3)dq10hxzhXYQ@p?m5h*EjEMG_fZb{D;fr?fpojuzzMQ=jCcZL!A&^0jbF;!RC7cEGUWLgah7ftkRfZ#NQ_~2ijZ<2 z_^cqHkxhBC_^gDAMsk>DDM_7d)cxydjOKR~iXijA`&_D-U&2gs#M4 zd7MCAI}wNF!3g8Y*n@{Ez-a_3Zx&tiFIQbgF z^EW%5|N2I-ekNGnh^z})`liM8_@x{zjT#qfeKg{J7-JZN7lap6jQaRlxmTgA8Os0h zKyAO1`#RsVERSUEhcEG~PrxMX2k zS&Ej_Gb{IH<%qDhy8y415_$a+wipJE2c3Jl4{U$P!}g>DMKEPum$N&1y$7 zu>SFNRRsa{WGUBGgJPDqVfj(itx@`Iz~ACoFgBy_au(nuHE`TH1^P44p$~qB${boD;(rIihD=pteyrm6r&{xf|TphE_qnZ*08qEy53ap(x z9ar||R%uMeZj4!myv*P4%qi}JTYsNOGRP1}eb?@EMORxt4*PQj+!47G+j1wB7ZSA$ z98#iERs)-Q&hVhN_Zfe#Sz*ZPGg~09 zW6rpS1Fn>uym^7@)nWIW6+fGCGYw8d@vEp0DKCF^qvLK-XQu7^DnXk)cH-SX=CZE} zSD7bdnP)lzZ?EyW=qZ?#x3|t$7JmPKPtdOYTzsuwBQW{V1YFG_D zlqd9@xfQZJ>?y4hrKN!-PuPRcYVqnm_CmF?jI44a57qFYCeIDQeZ5x45E^b%B9fQ_ zVCy%C)mD}a+X!IsUFM-Byz$~>d09x_qzwYDGMGWF#Gb-!XyFPBdLdO=@;h0^-;}xw zeG)!{14L;oQNi}#hVm$9TnNIhOT0Jox?$^i4U~Qpi3v{t1iHlKXuFLS!*x};zd#T;uEL?vON#&{d7D7*DYj`asG|rhvho8YUOg(4E zc^LF{d9!Ad0FPT`c%xYS(a9 zQV;E5_8u-fpzMqg!9eU%hV=tCS?gvfGWVQa}R#Nu{rJG_k-Np+&^2p4K3boSeaP#%)r6c;|&y) z5+fQBm;4tQeXWaXw>O-+3z+*fr)mPJENuO4jC+5KE^dDQ>u*CHZ?FiJPCD#Uq!|uM zTcslc_>IUM_5J?6;ngmc_~SV}GL%+EVNs#1XkfprJmy6^p!aPAt*0Jr!7qYmauzo+ zhy_NZMP&;|j{a?oTBPDv&K-)m=@e&If7U=ybSm|4W7KYORsvGv!um)|ZdUC!0B@1@ z%gS3+0`BhkbDFpb*;r7xBP^3mlA$^k!eC2K-l7QxG@9hQqb8?Ls{>r~y@9tOGy&`C zr#R&!)=@0-^QlX_+fR4R)$6?32@QZDXEvNPZ81le$Bmo5|L(V;T~vVD{3zDZh;j$O zb{v2Ex1p)tuaDiNKca|Xxp|hhKRlIEeMB2Ixk>3#C6{`F<*|WHfoQZI!ZMYRCDar8 z5`#MvJZ{qRY?!B9;v6JyK>AO`f?9&71P^9r_yODfI@GQqs>(@sW4%w$9Cd_E3p1#+ zM%!M;p1m;X3$oxkX3Q3;M)IXh2W6 zlvaBIIMcd-(lCd<$e|Sl3FD~-c9P%5P*>U0F*Xf-0eu-GOIbHblTbEO_>O?n$&5pa z+Yc`>-rD1q2Urboiq|wcS_N?46VN{)F^7u=I0vk3lP(>=86tGIJugb&3<8-0tO_`B zNXZi){dNeziTt)a<_V)vDyLLUep}9%TlB(<4mc^l?RZfE=N0*F3>n06QJJHABEOw3 z8sJP*T6sJ_Y7pNZI4=zv1Uwc74azAUPpADQk5eFTmW09FG%d?RHxMls%*T0I;Veam zGiMhb=V-Ip$1eb!k}(Pr$cIND-vXSj2m?*PiCHgU;6(+T^aTtrdf;@CbFB?8D&V}U zP8u2aAXWvOBfRqoRs)<-BIP(>u!jyf>Dc>;7Zq@(VURN~D&UknWRSdK7;9^*0-U&0 z+;!z>s{p6-Eyr>NIC&tC>GC|_yfS7`N;}ENq{k^K9W`(oC2*!Wya5)#DaDN-iP*5~ zr7Qv`_frV4uK=95X@M!U{%10k$DDI1)OvS94{TfiNxJQR7eAyljJyk@VqF26OcK> z>VOmTsST_uRF_yNO4dDY({^XT8Gx9c7aefIv!6MPe7itSfD?!E2&?lr0htC?=W!yQ z!LTd0Jr~$>XIZB6PFB5$o0uRee=M;1!%J`1 zBYJOgI0Z5N1p5NGIf^Gk=h3QgGv*0t1#V)(pdZpjRU3jw5CShfxCw{zUS5(*7jC9x zj0!hVO#^z?>Tng@Y>8YexH$qa37e8g7~^kvakqVJAhhlNh55Bt(A}E~na%BrGR^&uKT`uLztR!#ctOIOV+b z5^ngN-gdb*WbV7_E;3;#GV$4gGo?5!tSZGRVC!i+Qk*{WqDpb1ylc{>r#2)Z`kh~j zi?TK(<@9le)zyaNkda!+Sg)0oYeN#=%TYegI){_hbjuP^Epjab=LCmy8hKFxr>x!} zWvwvjQk)}_b^%reoH$eOQ;cv?Ih=S(_tGCO9|)WkVY3cdSSUkBSos=BT{+hIlTzTe(jTi9BIF3O zoRNzjhSSNDXv)f_5V4^?S64cHA$xV(QTsyDP{WJ{iiRP4r&t&NV_z*uf0T$|Q|6|H z;`B~-o5T!8E!105=BEI%gRQSE2yclOVUlhY*|7Pfm4jO;s>_+7nPB{oV--1TIRJ(! ziEBd>IZ3oOeVN@l56!JtkM9B%<^dMp1#+=EY1rL^nM^BV`JuZ93H@9bTK;P@dO?lJ zLDS5Y^%fXdd>LttqhM;>rajk^s?h(0k`B{L5 zhs9?pgO{dM^gY#4JtHZ}I%YcTl!*j>H17WWSrfDZuYb<&KAq@#-Q5!rYgC;`KH_C?95U)BpN=_}&1aNaS+pxMLQ5BgDi zc_>5oo!aY7LxZxRFz|OR zMh7(?eETocJQCrd|0;UZ6UO!M!4R3!c&6%Fv$zw4*gW_G#!O&FRzu@tF_vhK{g;P| zlXi*o*XMU0`>WmeQQsQ8Is8{|eZlt^vo`P}K7%SS9JPds`TU&D z@6s%q@^Ba9*X=+luG+=H=nHF1vts0Sv8DHc_l6(`=-WAL^!L75*!AJ?&DpttpG}3c zLhbOWhp=+EUp@|v3Ao&e*83)-Ivto?`ZU;Og=`CA)py~%_iJzhZvyaxJE_biQEL}c z*d*0%kPbv+ahkweja>64SA0}L;6+8f+wBcn0SnHA<8(L9=#|@g96!e~*49D8nGQhe z)`XtbnwU^b+-O2W)gl++ExeE+d-(V$QVGp-5z5HXtiqW4yhfz_HUBc?V=VFc8l|Z<>%=cWOZ2KV9+NRM@FNNQb=Os-kGAW=K-Cg_!7DO;U zb2EfdeH9=S4F$xqFar-@Qjn%BDal;9h6ClWQ@-MSK!Ny$+y1fqv^eSV6Z z7DQM%YURT0L5-T;dI;-gkm{73d-W(2^B^I2!sEahI^}F%xb1^v%6fv;% z_W?19Oig{vm6AGFRdcYsq^BVYnMqf3YJ0vk3U>inktBkFyC@0xoP|CGfqwNcxXqco z-uS20WXt)zums*bozWS?-F+nGjlf6D{c28r&POPgc1Izz#n0xGR@FYaZG9ojlr2I3 z$3(6B&%n!Fq%dAJlug7DJIGS%s#;u$})L>iWNox}nH4?;G7B$m73Z=QSCFVgcM~<=w zmT$A{UvYVaX8FR$d~&--ckSTiGVwq?WREA!CR>P;1{Lf6L`75!J0|J@!ksB|#7@gW zOep!a3`)^()PhmwWXy|)cs{u zjYH*h$co8JR9Jr@col&EAJu>*{YF(Qhg#)lFh@O2W!TUP}ILXKZ0Q zs2aD(-9Q1!t@C-Clzg2tk)LG3G)wg_JmZTE(C%}k}oS%3lA#NF!(?jbdJt zk24kcI}g}N8`P#8Ql{7orP>XpZhydXsuqq^9!C*V$tTPQOcc02EceY-zeiCROA0Yb#*SPH#ht5s(g!F+K>T^S=5}iH zy^z&gLb6o=dzE4mHKOel^oI+cajV!33bWg;5y4|qm>CcRjm!Qx9flzLVG!BU=uM~(p0)8<&Zz^zut z(xmAa*aL5_PIpbUgH`dVJ(XU$lbg$+ekq%p;~H$?M;)D#sFo#OEVeAta2N;JTvy)R zN^GvUZq2|URjmgZ+uznlu{KZNYKr>7+ zqkyGXx&GPd(kN8{u<+Z7_T}z{pr^+m)3R>bOGw@v57*|tX&r1vEhz=Ks!?nPbnF8j zPNT#+PxW?`?@`cb;Xjn;_h@G6R*5x>ZOjf`5KHiZalY8(>| zOUCo;c+GaJ$=j$q-LK}k-^YvmW7tZrImfWg(q=^&I*4ZtVMYEo(Jw_FZQFHEt<$hB zXSv(jF_w!R6`y)GFNG zpi}1eM}3(K4ro^9!Z5GR_^xW2b(2Q}Q^dk{?zpJ0*rV@zIYL%zyuIhS{DPY!^M%O( z7E@lRV!uDgT;1#et4|XknV5Hj;xQpvV2d;Aepx%hDPqJ6o(qfP6vp-mk4f$3Gii}t zCsK0=L9k#C?u7pi$-R_gKpQnU1l{fVPVH8LYA6SqNhQ3gbRP%brJP3BXhF!I1%VJC06tDU_H4*oB|7wFArkmXC+BG(ekr0 zUn|mfr>>hFhiy_XZC-@^5s2x_l<2EPSD)HCQBMKKk!qO#$gX&>>%V@JccY?m?T-6H&WDv4i z^Vs{0gHddLdBalHb+Tt1_e}C&X4vYUkqovM@bElU9Hge@%<$bxI`g1buVGJW{zw5z zIRjK5$Bk+}D%wMxK#vj_sL#q44h0x^A&=T1v? zNeDwFwj#U<;MfG)i(^x3O!{aN2z%EM&0p<(_xESIhq30)sin(1Z!ZG0$y$?8#+3`C zI9kOETiQWak+qbroo_71l>{HP?aVlE{XmN^1E!MzwQu3y6x+Owwv1)vgm*&hxLJIa zVa&j(*CkT>{o>>EMbTZ}Oc?L=`}Mom7Ls(XM98U!g()q$j=xi z*Leh8HGS{esmH~S?0tn@lPe+BaIk$@;mjzVY_bKhv%mk#H>ZWRJvEse0neV4nXN;6 zK@E^)22j+yL#e1unz^6ePTaUx8kBA!2$Tya7JCrU z`883)IqF>yoX;S3^5jOx^2U|wSg2|}fs(_#MTF`?<-g0idzfNs)*`7<@0wlzN16`A zxlAmM1lC-kt#l`O$Ll&$%vBY%cxpwh*zDUaAq=^0S>H4cTVVBg zM7RKup>~=Y3w^fwJCAGU)ysqKX;$H*fL}^^S8t@m%q}Jzw9CUaGfW@HH3Ebz#n0ud zlHV?T7wuAIEk9$dCRy?%P}BB=R5POE}u9_kaWvbTH_Zx&RsrZEt+r%$<8QLzFa-rp&?X zjBnL~=!Gr-`eVoqmAR4lXA%I*a&|Vww-Uig!PT|2&zE&S)%86}hHuE_Y_o>#299Y^ z(=AF{h8|36fT;t=w2$OAP4S(PoZ8Dxd6eQgI+q&WWm=Oj7}*W3@z7uD`rHX zf7dN>8=C7$kF+7qql`8lkl0D8Z++jzG`CPcQQru&r&+^lQN_4a6CU>v&j71A z16s>t=;a{Dn#l4Pt-2O$HBRkR_53liUaCqfRV+m|R{!RDQ-Tubk&xD1V~0ccF^HjRzzrb;NZ37MC+U~!`4-s{k*W#E|zUjkah z%)+JsU8zMMyDZhOc7jT%v!Uqr9+B#jV-g_Da$ErEO&7KLWbtYRWK1sHv}sZ}{6IQ* z%?>uS{4D4YsfgJZbBAW;_;xNtCWr%(oJFppGpJJcjU<;lo2J5EoJ7s&UTx|xGedzP zX)D4>LxTDmmBQ)2OL0(C(5?J(wAmbq94;6tfGM-P`;?JdQa$CB*V>>-i{x}pEEifP zAOimN#c>;~k=jxy=Bj972W!U<0FI8EP|LXpi} zlg=BldKarCw7^j0oSvFb+FPZcFAi6YdRiCH->fLg`)GCvDyu^+3SceHOAvtQ63pPu zr%1Yb3L~!0KdTj1s@AF1*=9aMyy(h3|dC{ks8UVjvBQy@)jSour;^%lzqHOJ)0Q>-OY3u<}hFzw`@T} zOh4HjU#2viIc2b`50y>(`LM2hyi-%CSx|Vr9(;2Aq6}?`%w=KR9V= zM0#Jq>@}MeQ7?pLJS?MLNc)el)xsetTq7-`R0)+gEvMQuX>M-)c$`UvIz1!9L_h9L zrdYkaFDa0PZVN@_&C$>cfNs(^u>q>`ncwo1&&3gJA$^K>!t8Q)T1bOASkYi= zC#pA=D$*+vwz|sk(S?_Ql`pFtw1XBU-RjY*m&cm+(N5#hx@{p^9a8PZ^~xX@M7&GiBA-?nbf_)7up+h5+kysH&SllV;n3WP@^AyE{jR|-JeTz~bLNGw zQLtIct<3S6n_Cr9v!$SfmnyVpo!?t@Orl?*nB2by)!`i9%cz|eC!u2D zBmByh;;SXj{ETOqc3JOLtvQsYKjiaIa-q#LUlv8`be4f2**pWTLY~!5dSs(oq~$7? z^}T81D=;Jh^%-SlhSQK*c>5g$JrM{?Ay2rvL`&Z_h8 zOy=dxBItacN(U8#S$bl+tmM9-QLoVMa*Z)8RW#Gn9+a6%({_yRoU05I&`)M28!Vsw z0ss1R)C4eRxncYaE)}}Zdf6URbL6#&6LP{UlW5I)mc^8HnANFXaX~@Gv`Og?ncB0l zFb4lDwHhPUi~nj)_15@m&3ZkLlf`F?5*07J-!$)~x;8>SG!u9X;(j8~_QkU|$5>l~ z74#ge`O-->Ch}d=K2F1 zVgY-wRN;aqX8dX&YDY*G?nDh`NZf2(G8_!&H5O!7^TdtKLV)fFTRpskQt2!;r;<0q zyR#y5D(vRv@|f-7Zg*d=h{@fbsynM-W}~EE>QRZi)dez!73bTwWZ}z=oq8#T;$SJP zkLGG(`KW6a+IXn_;XE5)dD0>65Mlf4fz2WW+g|FNhZx&-9goDk?cWu!M}1~{{ZR)W za$(1;OC_fy1bRXSmdhh=7VBH8MlA@H9w17xsr3(ADbE$0c**+|bhE5?s`$t{VBLpN z5UY8M24KxghGgq9Hw5()RBLnEzV?ZZdgp;o(0a^FS}oTaJ4dS*N_YDs*Nj<2ar#{< zN|4$h$jMRTC0pp(pXMM&2qt`4x=2<5^d6VGpZrWv-3yZV7Fnz6@af)3$Cv|~X2s+a zDXLq4C35CoI56S)l%^!*uvl#n%Tu{5 z^5toVlZU!zA2v^7-3%tmG*l=9wu}dATd4)tU!8O;wYxXE{%NacBr{eH@>Q-s8#Icx zat>h50aQa+bzm)8zL5*{xkMO>An9zEI`+T|Qq1YCWOCF241=aMq^7_u?}aMWE6`Dp z1(giNn(0-wVyBV~kmj(ZhI;v#&zbTyS4{TDLrHuUgRnue|Evxj)#o|end@T5Y0m^x z$N6XTP1AQiPLuk4bUE2(U2$lZ3aU^=G=f;NyC}05VZW?4uz2vUJeUBRHS9O5EEtM? zch`?ia{}n$8zU{Sp4m--iQjMHLzEmWENMveS@>8TQNSXN$0Q?|0Eg>25F?VBxtKo!e06 zh-wZgc?7aO(9&(mkRs`B8JkdhyA*6o`YvlIPLrehqK#1}`nkW~84MYQ39HBXl;hN4j;K8piD_ALkM4q4$Cf_?R+K{5Jx6UNA;q~l z(YHf@pzvMv?R-Fnj5y43?X=yc=2_p)SDMGN5lE}M_TZ0ZwIceTN@>Qzo#-dI73NEj zE1G9F>;81=U4}mmHc&IOwCMfK&B@4za9=KNxq8xzuxRi0*SdeqaOG{VI3|{Ej2alD z#I=k)z(*lAHN*BMo7EYL)FO${g03jOnVfH~TY6`1rs^+&2G6q8Mh$dlqcv&nEI9gy4>|fZH5xd$i@ruI-dGZlH> zEMdI(HQf(Y-5C-wbp&NvmT070L}iiwlECfT^a}50auqBTpEp1uRh<*fN?~lr@@UTA zEJYd&*-4`AKz(Q1hSDK)Xu(7$2U%wUgc}I2T zEcQmeZX?@LI`49l{rXMikKyd(F5F4;h=y%T*SZ3frl{vF;iYI7uOsUS1-*I1s%@s- z7Pd-r1L9-OZay9haRlNcq?ivT23t6P4wk-M-apeDP2FxqyH%L~-h?6YUz&~-{w3j~NqpmC?xsx|o5~-VG`ZCzs=1ka9 zBbxWCHxs%xI4wmjxX)ecp|0A*BX?gGofGra# znx5&N&M|A@J>|KxS!nUEd+c+BuUJ#0N=gXx43mS_y^o#ytpvWl*H z`~(T5d9oK=;dUlN1>R%xx5+0oZ}bts(AczGl;X6!Wn~@Rq)KJ)omh2BBe9GU!+Mp{ z*eJr4QW|(C`3z3Psn@!-Zf>u>*E>&AW6|KORmm&uyt`(i%Oh*$_s<2g{_QQ!<$a@{ zqX9YgRM!C#<;1r>RJ5}`vsh9FKu?R3Sg>cecX((ZTjX+FZQ5$-Q@NU}vX7K!$`)FHbfLuX2pY&0M6DF&&lqB*j?Wbn>sj8l-{guC+)%I86 z=23{feG~Jm+1uNH4Yv&}wzqph^-YZQ^_pLW+x?4`Z*qS^Myj}`y@tIH6qVm(9_7wQ z11sMo+`={Ut1(*GZm`#WmD?t}eTgB$;;VT1DmKFQ14*<0oQpJWhR2wkcUcD#oW7Y3 z9}lhehPX0AX>1-YvYCRhVT*!!6=4s&nwV{JY-p6y+6PZoyc)eg$wr1_T@TL3q?E#M z97b8QCACqTQ;TH*8zl_glZZDkx*eNhWt~sAXL{QKA;R|7;;q`{Ww$66`<&EkSe}Hf zKT>K;BpEX}ig1XU8+&U?DWhKHd)_Yrn=WM0)y-t=y31PQ35Y( z;b0-JA&Eqk0}kl=WMzV-lV+@7aD{{I-Rq-X0)Qu4CVsJ*JXK#;fVwnud3|0tvna}H zj@rRJN!(#AGM>Qdps8?GyIg2S@-wvc@f}}ij#gLdp#i&@>cqW&IuY6wCT(gZOUtr@ znlv`DrmTj2UDd>xVb3S5)Vf))Nq7`e=$n%kT6y4wc~I(Z7SLC-ZWfY;^J#L0UN5AV z)96<$E9E?>svceM$n=uf@#*n_4!cYThW?czu~^*aqq=J?rAXEtE$sy`oOap73@|^G zx}5uN$Y!@iE~OHLAFZnoKxj-g16N#eceb@MENN5UF8_xN=^ z-w>`DQv*c;OFHMy!y~THY+#f2lIBc0i37P zf(A0bx%?cnmuc!@C-B5sFZ#q93T&3cI2*3ag#W_dz(FT*;$DIg*k0J0^qNt0jdIc3DLdxs84!dW>+A^|8{`&kQ^vCBE=_tF z^OCkJ(;=sgE`*3oY=vH6o`60%)b@!SwKNDB@_E+4D@&i1Vw76>g}lsMy;uH=9ar_B zfTCMz9jt%mV7u{ivg$c$#bXJNGi9mI@H451tW!HWWwgSLXq$&NZKUg6n25Z!7s73t zas>Dp#E4MgZX8Haa6h%3ek6SZyi*?&PKJCU)!zL?WDO!Uy(~z0QHig+v@ofs_LBIK z@g=Csy41wG7lx9fl;V$!VNW7#5(BL*40fNcsaB~V(R>`$ZbPd$gM>jY8-wHhbX3Wv zhYlYFL!()2xU#;rUJkQqrLmi5;gv(q2;!5>CXJZ-W?;M5w_Zwm+MlRBB%H$N7dH)LavxE4;H^Ruq^Ur1s6A-^M#w-f>Y4(htft#>QBA+~l-H&9C;fb~V zzUM7oYNJHA4^awo)pD~sMMb^J+E+^bqJ`u*8_I}1@lyTnl~Q$C$umo2@M=n0m zr2X@!wX()0Gal5tt3Zb2rTU#4#KLXeEuef+tscJAjytWb$wW72@{Hf@U>YMj2!Dcw zOWPpBU>biwK%ut@VwB_2D63TVZdx!$WRg`3gB|$XU8FpQ4|Xy-1U~4DVRCF}HP)@o zvOc&nu-`%+!0#*kjVa>yb+<1Yvpccjlum#ppMRq^RnR@EScp+%&esz_!RF zNQ~*-uuk@@Uw2oB{;HE3a0#f2M?G&C)}v<~{b|$@kRJqvMzM~Nd=0nk7gkO>4n+(> zknKowk>Qr9e44Abe7tl5mnYK*T$#mgz4<4HbDlX;>B4uj^Ve!5#Xi56o+O*?LiXdW4kqm z#x=CRUQvn!^!W@V5d~>QA>qG3k2}qb`6`d~@1Es#^ehNkHX!CLmxIKwZhwHx>Ldi9 zJ9=WB&erUi1a@0Nm3E7<{w;(AkHiR<~|`W?BCC?C?kX!Rty!z5_KH|1#qIg3jzo;-;!MGIt%Hf51H zok`K|Syz*L#SEK8HjzAsTkj1VaeM!J#O3V0@tH3k$Kdd$WBt>Xu?$ALcHJ6PT%Zst z)-Sc3M0E$Xk2+b!zyi1=9+XH`vEhpjiqvw4qw}-DXsm{J?D3aUe8@im{>zo|A)IMl z#B6jt{K<~2uyo4?N3(DQrdMQ1Na_bY!P)l2+XYWCIKOfIGQgC8r|?Un^*{`gIZ~HA zhabow6jZ3W$gFX7P3edH-sPS6a}5cRU{%g5bqY1J@SP!f#IdNN3W9 zzU3*=dF$u2#+X^q*D+GysC;=YJNJ+-Gh{i;*6aGgf8b^=ughrkyYLmlSYuOWzVPbp< zoK%P_NQ67ts02QV;llugpdy8_!$5@3mX+SCKXH-(Z{WDjCyl#Q7-c13DuWMo`h&RW z48|+KPxFiuoF5_4=v?9S?86}V>y#mV`j)%HDx{7Lcp`2-CfLz^8X^Jm*)mg3A;IN!2%_1$ad$^m zk}gNQ<^Z^k9s|8IW#T0hH}nFkcjFkol|h1GbJ6_+RRsyL<7ZH!9*&0uA9$GNPbuF} z`5Q?<`cl5BEIRC_%AzN^GwDy_Dr`?e3JxW*nK)POpbJh^Cq|w*_5nW}DU5;}W0?mj&Orn+~?LvuJfO@PcHKO|0uL&h8|s&7Bw#wnv@x+#Kv zO1&+toGP6XLL%BitQ(i72+}OzZYv{1rY1D6BxorM4CZ?&w`D&a2{h}4!-*9J$Q4ye zXSpP~-;yMGoNxiMaG?Y(S&tYF^of>6}-%rH|-=bCX{4 zaWOOC<&Inr^N@_jo^XUALO$}E4?wbj>0;shp%L2jW0(mSfycnv+yjxdWyKxvI0-73 zW8AaGILdxe6vmF&2B^CAEio@WDQV&XxQPPH6p|%><@k9?SUCbK7W5V%2 zu+A319?s}7yd(O*ZM7k)SW(#;Ie8Q+R3n~^h;jjJKtpK{`-UiwYN-K=qKR>GtmsCC zfQ=O#6=Stiu7^_|{wv!wTn$>=r*sD#gb$kbwuAITj+BR6%j5kJ_y~w!VtQf-%Z(!y zpa%SP54mpB-pnb130grW-a4YDapsuNop;RgbD86#Jb~ErPpHBl#=mrO&p#Z_7$MBW z{on-R@J7907?Zz_F*!6NcVX7aumO~9`NCQQa2-#*Q!mXz71*^*fc0?dgEA{PuA493 z5uHrLaE{WTurW$|g9z@RnjAaZgvk+wf{q)`H$!DXXPqnB-s8eKzK~4RGR4shJ(Apj z^4Mm-DbYUgWi=jhxlo}bI2Y>|_?G$rd|&`zm2}W9ayY`x0^gG7;LZZQIcYfjLOc%i z9ysA=0O-|~#|J01T;J@!uwYo(4AN=5>s}@SdYx-P72N{pC3~@l zKWN4z?sw5GBSD#qPXm3CuZi=9R972fSuF~`CEWF?(vh9PJTJC)xasG_&j6!7)l4PT zyo{G47a~SxcKYjSOJc`tmCQJhSWqWmP9ldR*|}Sa4|dF!$2r2f2>3?H6dLt=Yz!Yq zpa|B5hI1y}4lpi5nD9=Cff2w1n$It7G1>xTXFa{{FNHURfo^f~*!quWJBYO#E z)5$W_(;<{bUkS~jAdzYE=auU?&Bp9N(2n9zA!8`BgN?Z3eeUCqLFXUFdmXl2Dg*8uCw9=N(C|JhTnzbwonmA*$SV; z`29FO2lrUT7<@VQSv`M+nVNNjaq{xuW1S)|(ezu5N zoHRT32v3YGYyB2IQIA_X*^JHih_RU$RtA+yZrs6j*>0BOz>gXK0O2?Ww=F{VGw1Unw6T?zee}oK^^`ld$E{e6F zry=QWlzWx)Z6Z>8(5xl&1Upc{e=dsL`f?XKX(FGDj1U&OAnpuPY!fK1rlA;|hgu@$HkVUeIX z6F`{rhukOIRxi?CxU%IK9St|fpgc?40uNnGu4CvC(i1eQNS1a}=Ed1p>Pv_rxXzkZ zKbuK^mU*T-J{t`jh`|ZBH+f+mHq8gFij?J6j;UfDUznHND_j_8o0)26$vgGQCld{Y zC1cjfO!0CwekrrY#FLcq4E;D?cvhT_wPuRRLlkvLnCGi_%*j*kV<9Lv6Odr+?<#M4 zI`{HX1SvV`OR|{pTg54m)*YK=QO%lv5`VY|=n{+=aroqk`rtX2_B}kXl@%DF)#yL2G&KLy%@E;_CMBy9CcCLf!?yqT+88;mb4%c zY~Uvz7fRT_Y3Ej!+v2(ELB#R0wZsrGfc}CJ2Zw;ZkTY+83=A5W7q%>@+3`q(Q}_sF>{9w1i^KT>tMfXV4oZfsSjPzh z?zm7eaOUNLb=K-EE>#Lg57l&l2!aAZu? zmWk%wmm+i50?&eQtunh}e%c}@AQY}+ekyiopy%f*Ec70T_Hs%)*^K2@1`t2Tj1{F`my5S6xb+DY7Y zrJY0t*P;S>B!^9;TU3-gecNOgD217b2^|)FPskO zIMt_`bAMA#fO>x;ur7K+Wzn??Ju(jeQsPf$B9^}JjXf6ipsP*SIyAkdf{iN z2)(e5vm)r-gsy7)vj^7c2IpEHztC1~PrjjC(!(p)1%l0Wt)pyH=f9Q*H+t57)h$FQ z5Q5&bd$Idigr!NFlEF!NF9V~xPE3LzbaOnL*AxWSQ)K_$033xx5m>Phw@Yc93L1Tm1PJJO-&UXO z7}Z`KU(-}HMaJ%4SM{U^xiM=^1u|{o2G;E-2vqeA44`km~f8K#Ek}CsiRT&+p z7eonT<*~YmcbI~XC_W$R7!LJ@$71Dhf0aqIPs|?*;&5#Jo>}8InJGqxvzHr{qg`my|TNb z=lsArYdy>T_fBrA zAL~g{J`4MTl+pD21=&u~&M>f@@+;7=xF%x)U`8e@R$dU00>80N`+%pJf3Mp)SU1D7 za*BDqp^Ey(I(!VyA-%E698x^mWU5$3lJtGg7As(*g$6dqnQVal+l+)l*8#@t_$U(S zI<%2uybZsKl1vn9X3GdRjwA|Yf?Fc?Q2W~Bj3$a=O|DmOndB8F7lTj6anX3YZH4L} z-yDw1MIlN_Fd$)HAMqbNhMg*Rq>QkAss}av8~_xuwi6IEyq9vRY!pBHFl&TsEJR$b za4o2pqnp`!l;|^-j85_#{sbd{6(U9rqvI+39>sWkGDGe~Cc@eIEz>)Xl)=h<=ntF* zlV%z5^?9y`UCV3(f2&+V7`)Y4sFh@T*oz@Ip5L3h-D+e*E1|OKyZhN&Me`~I*4tuD z8NxC;A9fEWV0^M0es`Vv7}f$hUb2UOK8~_eS0ADXpj8V}Mianb03W^8GD})Vozl$` zqAsEB{c!_VW<#$E2AzDXWh$^fn3HpkI0qbm&?(TO!(KJ!g zZc?~}RQ2#dsFcz^NQ`Ne)l){cyxgX{Y80e^bEaY{pE({WiXJI405sal+NvYzO-Esf z)*PNiah?~6tH$*n#9BgIMNlysQnS1q_cEc^&dUL0K`2|I90*_wC^N@$h&PgXV8yR; zNWDCeJ~~(~jA!$z%jWHuOJH#z6%NYGG4Cbh3o=PvXb)fXrpmeM**@JxP); zy5pRA&gVB_5;f?sVP&Gtk@dXWyp9>u8$+E4g2sLTW4Qv5fV-}bmX6NH!v@L%{?gG1 zqAnFgWuqsFfCAcqr1)L3lIldbWDkQzAv3@bh%%nFD1%DxT8Tpq4i2UOFU>ug+Z!W* zaMvEfOC?na)^TqPHEFoNpjd$yQC7E!J5rW5`_vO*a|9+!+J@6H(vAcZCzbp|Sf@|c z)h@Yb(gLA0`9)QdcLcXX6)7KbZ%QZY@I|gRc@K|=G>_2}BH7#+Sa2gZ9o80DfSj{} zuubpB)ovUhWZnbKHpYk#G`b&eB>h*c_*F2Rn@ShQkMVK`EjE9)Za#Qraz`B06IuM1 z)L$`A_*K*pFugH9gMW2Mi2iCD7Mi7Q|FzRgo|)Z9e;WITR!~JiVDun1CgCav0mc)- z_Z{o-gMgT2FWEF_Z71WNwpPCESl0~1rMbza`Cg3qw9)Xpuzu*x%>o6l4u8?V|JnPt zmHU?D-&r(Rw*dMxVl=!U+xOU_!-Z{U>Y_ti?p>a2IHY!0yRR1Yd{hn;mv&0>OdSbD zR^Y$N!d#;Vv5}kPM#IVsZM)*Qvg4TmViI&Z_5w4k+^7?V*G6t`7gLd&bZo(|Ge?_|e~3N>VCDFU^^YbRKMyYG^MvMr6EtP1$lRB`-6|zwwJi-@ zD3ru@RTr@xzsC!eLHq>__F$+s3$Q#2nd!iEmKhfUmBtC*7go4rpq01C_21Ci!DHOF zKX%`4)}1%&zP*q8_8#sP*{acFxXnZM`Jz$Slpl8zhLHzAII?9!cV=_z))&2Rx8q)w zvPc|&+vSc1n>5`>wNxHc&R^-RtRUJ^k&1(d(+6GPm*ANMfbhx>8Hdn`bK7p-9QF&? z&COo#-L61K% z4kKff1EZ{$W%JTj1wA*`<7@KTmt8!Y@ z;rURCx2vKcOXuSdAKYv;SkfYN*ei2va)@XX1T*)tq!@@d?1Hbtalax9TI6;b= z8G|Z92=#O*+{p{8Ss^?ghXC3J8-&}-03>ff~acVkA9P&4^;;|WbD*o-Kjj9+G5v8 z_6rYpw_wZ7Mx_9cp<2(Q!oz~1f3UCOuiJjMgAQg7#-s?ll1XsDsO+T%2g5D7QWZPE z&UmA0?}u*`oLf@K=g$;@~|@tTb6(u91dSq2GCnD=dw6P7=4s5r(*|Ojx%a7GCIW~u!_fK zZxwG)Q6l)8$}p(>`rG;^sm9e}%C!!Tsx4%R%eHeSZ9lsKy%J+hqbr9=rzeP*7&wp) zMFoxRgIb2dek9DaYu$D$%Aa>oP?`{Y?{`t-P2ex zmn0$Cjn7(x=ND;UR<@N(Gpi_r@1^ZlFtO`S`NZ+CQ=qQ?lbNS+Y`7jxAUnc8OdQJa z!M$aTWDJ91j$jztlheYD&*SINeVT7oX&)17jmEqO&gO35udA zdLrv)!So(G=+bgmYpL>&KsMVCNL5i-;JL7 z$$VwGxZ_a3u48;9>c7BKchf*e%-VLn6+w8zxWNw8oK373N3umCQtffV(?$n(d^j%0 zD1qJIvU=?BN$eIF66kIWQ#<41*y}DaINSGfzXT;iYO@$g|L8Pz@Q zMtt@YAKO`;OjXT29uqYqWza){g6UPInsKAr^1$uhgIje<7-meV80OxJEi@aTP~pHp zYqk!}%C};}fH)T}86?ucdP^@YFqWstdcay(zt*(F=+D+&%7b7Z(Mq(xq|iYKTMVjA zZpAHRlNCh}5 z1p=xVaj!~K9^cE&M&_}x*Ro_qrB~U${Jl&w9_v+*~@We$=(XPQlXaI)NkrY zw|p!1$<4G#-J)3fh03I66^;9HEhxW4<*AVU;No~{!4yPqZ?4l9+I0Y-aVr-ZfcIVD zX!1grXG}hq2$61(%prK$asuqADtmu8xmR2EKJwJ)Hscnd6krL39&=_tLtBzt#IhgO z*;;~qa?vN=N$_xjK$G&uIvZY=tM&V9feAsP_K^I$8(2B51{`0ETMJ-dDW~O`QDhWr zUJMS)^csT@%#M0s9#ywMSy(4MsvWSiS}x$15A<8GhP3=~LKgmS$(?*KR>IBi9-6E23aK2^Z$qQkaAS>|F%jiEmg0AHtA zTKc~-DQ}Kjum=L(5Z)7_vFDluX$kxSTuB$Kj5Q&{RwidpJ+_Ua5B36K?f^Wn({DL3 zUdOGN41DY6n(r6z4dJESub@;~v5wv+rDH+XL{uYr6t_3MR(cR=FU3`83}lfAzg@MQ zGddJ^&607nF>X@U;mZxM17}7qv>ojWNIoN?%mxw?usfbYnfpNBU#`367u041CQsZ8 zYcqBjK5_gMoSnvpYn_Or%aNWan}RlyL9T5zurn4(4;tO)ouUt42o=2x*4cu*U%XQ~ zdpJW#ZCF69W5>iEJM5qhZM)O5dB;@W#_*A1TS(>!QCCv)WRMeh!@walMGVXiJ$}H; zYjZB~&FTCTRdCMdpKwKkZ5*Cd5sI_PmR+d3CEV<240nSZr*Ac>rrM2pzCr065ge{j zc@_vG+zqYG#y#zJZ8G}2+G`qo6I9FdwXGX!j|lgC@8I|0dDgp|5}S-*Rcrbs#Z}}{0;_K z$`?}7FnBNrA7t5_-m=9t|61{@q%D17oh`zzb{Ce}yCBO^aq}un$D`qMl7Iz8IY|KA zt4odNY`^8IMyDhYrwU&eET_RbKK#1dk=V?{LQ=N{48U)$(;ms8R-pw$z!EfjZ4h`$ zT>m`k4~DEz+4_y_xL?|NC=R^wG@YZ*N;|-nhrC~7+v_uZ1G`ZsSP8qay+IxbA_>VL zy{mzYP8KZ2t}W93?22{zuG$q9B0B{c!1~HhXV0#-LR#=B3&5R7AEkNA0FgKr(&M`S z21VS}R!C#YzJu$UEVw=|V|<@{*S z6rKd?3hkz=D65$ce6CGB6L3c%(IBwxOGS>qi<-X_77_2(3yXOOgJmgd-(NWl{ZpVx4VEKkQH)ZK$rf zg}yYRyt1rEVv>DAXbNXyWdML0r*acy({afFK6zPw96XfCfI3FBz3|lp4?894@JTq2 zrqgkYIICJ@dHf_#n@NQILaZ%X|CGF^6Zpk32YRqPb1+ava=3e%PCzz_@l7uVzl!h) zJb$aaf%4dTep_wko&X?9cOQAkF4Q`G#-IM&Bm!ieo4kuXIkSN}kdo2!+QHY;wSmhO zwG|BU)3d34H7`BGQ`|k$&HjPpFyzsuAARX_3Bf$!BT;BLF7MMOMaRH|uTWXG=DWvD1RV z&ydZRl`b+E<7Z2LNdbUPDJd{IFPqB0{^NiB=YJmF)BpU}Pw{`&fBx6?KW_gpY$nQ! zHwpOQC|{*Y;++g(Rlr&G_|i>iUJwb7F5#v3b81@49}0 zyAsuB+7O_Vf6w+hBUyNF3A+;B+dhH)YkPD3!ZR7s!q@zD+v^Nuw~Y#T{JYq<^7vSF zZ?<2^d={vR%hm7d-dw*x>md!OmjZKsZEv<;KpZLXNS?l5&zW7nkcQ+cnfYsbbNxax zz!=u!*YBz87uYqI_r|@I*(9pP2G=jVZenM#Hw^BVhaRhYbNvF*M$$yY7yk9c*`eWU zZLicDI*HF;+uLLXNy;>TS8>bs3-|xFd||Qu!hfI7T3o-t*ivJpzsL5LCmXu>P2=8- zS@Re6X8VQPFn9j-Z)(?(0FsdDXuiujHFL4jYuAxb6BJ-fD%$+hy;=G8WLvo}ZJiV!w+{F6W4+zp#^9mASbqLDECauRs`$7;Vf_ST}0h7AK!7Ce8y z_1;{^K)OMNLcV4a`{i_Ru47;*6bT=oM*tl?vHsd?o9r$GAh3J_hK_B2S7#G^=T3<-K-Ms zlN~3ZHKF)AyBD7x2ben>o!5LmN@G3t(d+$w(`U}x0RfQ(5Cz9 z@?4lrpoA@U-ekJV-3kg9+74g~w48e6d~7z>lTsrJ!AHbr&59)|cD7x)i4DQ_uoa8q z`Y8Tr!@3>{5NUJSat$YEiL_DIX{k%K8|L1MQ=s{)J)&}K*`X;1;<;v*O>f-|gl)D4 zDp!z0tBw^O;{=<=lUr$Jx0dT~%)a|5X%djP^hacX?FJ3(w_-z)$(JV~J}RRg5$Ex( z*vIybObqjC_ck^LyGdm>Cx0uxOfTt?vHsD#sl8$`x0Ui7{pYPuK?;yD7-Qgeqo_&nN(* CFr(A} literal 0 HcmV?d00001 diff --git a/tests/b14.stil.gz b/tests/b14.stil.gz new file mode 100644 index 0000000000000000000000000000000000000000..a8cea1b50708c128f3387e84f188081c9fc7380f GIT binary patch literal 89388 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 JG>zym3jh$(`~Uy| literal 0 HcmV?d00001 diff --git a/tests/b14.v.gz b/tests/b14.v.gz new file mode 100644 index 0000000000000000000000000000000000000000..59c991191d3e95f43716b49cfd841bbca2f9498e GIT binary patch literal 104515 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 literal 0 HcmV?d00001 diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 0000000..e82b2fc --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,8 @@ +import pytest + + +@pytest.fixture +def mydir(): + import os + from pathlib import Path + return Path(os.path.realpath(os.path.join(os.getcwd(), os.path.dirname(__file__)))) diff --git a/tests/gates.sdf b/tests/gates.sdf new file mode 100644 index 0000000..1652ff0 --- /dev/null +++ b/tests/gates.sdf @@ -0,0 +1,29 @@ +(DELAYFILE +(SDFVERSION "OVI 2.1") +(DESIGN "gates") +(DIVIDER /) +(VOLTAGE 1.20:1.20:1.20) +(PROCESS "TYPICAL") +(TEMPERATURE 25.00:25.00:25.00) +(TIMESCALE 1ns) +(CELL + (CELLTYPE "NAND2X1") + (INSTANCE nandgate) + (DELAY + (ABSOLUTE + (IOPATH IN1 QN (0.099:0.103:0.103) (0.122:0.127:0.127)) + (IOPATH IN2 QN (0.083:0.086:0.086) (0.100:0.104:0.104)) + ) + ) +) +(CELL + (CELLTYPE "AND2X1") + (INSTANCE andgate) + (DELAY + (ABSOLUTE + (IOPATH IN1 Q (0.367:0.378:0.378) (0.351:0.377:0.377)) + (IOPATH IN2 Q (0.366:0.375:0.375) (0.359:0.370:0.370)) + ) + ) +) +) \ No newline at end of file diff --git a/tests/gates.v b/tests/gates.v new file mode 100644 index 0000000..2fa07cd --- /dev/null +++ b/tests/gates.v @@ -0,0 +1,11 @@ +module gates (a, b, o0, o1 ); +input a; +input b; +output o0; +output o1; + +AND2X1 andgate (.IN1 ( a ) , .IN2 ( b ) , .Q ( o0 ) ) ; +NAND2X1 nandgate (.IN1 ( a ) , .IN2 ( b ) , .QN ( o1 ) ) ; + + +endmodule \ No newline at end of file diff --git a/tests/test_bench.py b/tests/test_bench.py new file mode 100644 index 0000000..800f9be --- /dev/null +++ b/tests/test_bench.py @@ -0,0 +1,15 @@ +from kyupy import bench + + +def test_b01(mydir): + with open(mydir / 'b01.bench', 'r') as f: + c = bench.parse(f.read()) + assert 92 == len(c.nodes) + c = bench.parse(mydir / 'b01.bench') + assert 92 == len(c.nodes) + + +def test_simple(): + c = bench.parse('input(a, b) output(z) z=and(a,b)') + assert len(c.nodes) == 4 + assert len(c.interface) == 3 diff --git a/tests/test_circuit.py b/tests/test_circuit.py new file mode 100644 index 0000000..d61e8aa --- /dev/null +++ b/tests/test_circuit.py @@ -0,0 +1,56 @@ +from kyupy.circuit import Circuit, Node, Line + + +def test_circuit(): + c = Circuit() + in1 = Node(c, 'in1', 'buf') + in2 = Node(c, 'in2', 'buf') + out1 = Node(c, 'out1', 'buf') + + assert 'in1' in c.cells + assert 'and1' not in c.cells + + c.interface[0] = in1 + c.interface[1] = in2 + c.interface[2] = out1 + + and1 = Node(c, 'and1', kind='and') + Line(c, in1, and1) + Line(c, in2, and1) + Line(c, and1, out1) + + assert len(in1.ins) == 0 + assert len(in1.outs) == 1 + assert len(in2.outs) == 1 + + assert in1.outs[0].reader == and1 + assert in1.outs[0].driver == in1 + + assert len(and1.ins) == 2 + assert len(and1.outs) == 1 + + or1 = Node(c, 'or1', 'or') + Line(c, and1, (or1, 1)) + + or2 = Node(c, 'or2', 'or') + or3 = Node(c, 'or3', 'or') + + assert or2.index == 5 + assert or3.index == 6 + + assert len(c.nodes) == 7 + or2.remove() + or3 = c.cells['or3'] + assert or3.index == 5 + assert 'or2' not in c.cells + assert len(c.nodes) == 6 + + c.cells['or3'].remove() + assert 'or3' not in c.cells + assert len(c.nodes) == 5 + + repr(c) + str(c) + + for n in c.topological_order(): + repr(n) diff --git a/tests/test_logic_sim.py b/tests/test_logic_sim.py new file mode 100644 index 0000000..df50546 --- /dev/null +++ b/tests/test_logic_sim.py @@ -0,0 +1,161 @@ +from kyupy.logic_sim import LogicSim +from kyupy import bench +from kyupy.packed_vectors import PackedVectors + + +def test_vd1(): + c = bench.parse('input(x, y) output(a, o, n) a=and(x,y) o=or(x,y) n=not(x)') + s = LogicSim(c, 4) + assert len(s.interface) == 5 + p = PackedVectors(4, len(s.interface)) + p[0] = '00000' + p[1] = '01000' + p[2] = '10000' + p[3] = '11000' + s.assign(p) + s.propagate() + s.capture(p) + assert p[0] == '00001' + assert p[1] == '01011' + assert p[2] == '10010' + assert p[3] == '11110' + + +def test_vd2(): + c = bench.parse('input(x, y) output(a, o, n) a=and(x,y) o=or(x,y) n=not(x)') + s = LogicSim(c, 16, 2) + assert len(s.interface) == 5 + p = PackedVectors(16, len(s.interface), 2) + p[0] = '00000' + p[1] = '01000' + p[2] = '0-000' + p[3] = '0X000' + p[4] = '10000' + p[5] = '11000' + p[6] = '1-000' + p[7] = '1X000' + p[8] = '-0000' + p[9] = '-1000' + p[10] = '--000' + p[11] = '-X000' + p[12] = 'X0000' + p[13] = 'X1000' + p[14] = 'X-000' + p[15] = 'XX000' + s.assign(p) + s.propagate() + s.capture(p) + assert p[0] == '00001' + assert p[1] == '01011' + assert p[2] == '0-0X1' + assert p[3] == '0X0X1' + assert p[4] == '10010' + assert p[5] == '11110' + assert p[6] == '1-X10' + assert p[7] == '1XX10' + assert p[8] == '-00XX' + assert p[9] == '-1X1X' + assert p[10] == '--XXX' + assert p[11] == '-XXXX' + assert p[12] == 'X00XX' + assert p[13] == 'X1X1X' + assert p[14] == 'X-XXX' + assert p[15] == 'XXXXX' + + +def test_vd3(): + c = bench.parse('input(x, y) output(a, o, n, xo) a=and(x,y) o=or(x,y) n=not(x) xo=xor(x,y)') + s = LogicSim(c, 64, 3) + assert len(s.interface) == 6 + p = PackedVectors(64, len(s.interface), 3) + p[0] = '000010' + p[1] = '010111' + p[2] = '0-0X1X' + p[3] = '0X0X1X' + p[4] = '0R0R1R' + p[5] = '0F0F1F' + p[6] = '0P0P1P' + p[7] = '0N0N1N' + p[8] = '100101' + p[9] = '111100' + p[10] = '1-X10X' + p[11] = '1XX10X' + p[12] = '1RR10F' + p[13] = '1FF10R' + p[14] = '1PP10N' + p[15] = '1NN10P' + p[16] = '-00XXX' + p[17] = '-1X1XX' + p[18] = '--XXXX' + p[19] = '-XXXXX' + p[20] = '-RXXXX' + p[21] = '-FXXXX' + p[22] = '-PXXXX' + p[23] = '-NXXXX' + p[24] = 'X00XXX' + p[25] = 'X1X1XX' + p[26] = 'X-XXXX' + p[27] = 'XXXXXX' + p[28] = 'XRXXXX' + p[29] = 'XFXXXX' + p[30] = 'XPXXXX' + p[31] = 'XNXXXX' + p[32] = 'R00RFR' + p[33] = 'R1R1FF' + p[34] = 'R-XXFX' + p[35] = 'RXXXFX' + p[36] = 'RRRRFP' + p[37] = 'RFPNFN' + p[38] = 'RPPRFR' + p[39] = 'RNRNFF' + p[40] = 'F00FRF' + p[41] = 'F1F1RR' + p[42] = 'F-XXRX' + p[43] = 'FXXXRX' + p[44] = 'FRPNRN' + p[45] = 'FFFFRP' + p[46] = 'FPPFRF' + p[47] = 'FNFNRR' + p[48] = 'P00PNP' + p[49] = 'P1P1NN' + p[50] = 'P-XXNX' + p[51] = 'PXXXNX' + p[52] = 'PRPRNR' + p[53] = 'PFPFNF' + p[54] = 'PPPPNP' + p[55] = 'PNPNNN' + p[56] = 'N00NPN' + p[57] = 'N1N1PP' + p[58] = 'N-XXPX' + p[59] = 'NXXXPX' + p[60] = 'NRRNPF' + p[61] = 'NFFNPR' + p[62] = 'NPPNPN' + p[63] = 'NNNNPP' + expect = p.copy() + s.assign(p) + s.propagate() + s.capture(p) + for i in range(64): + assert p[i] == expect[i] + + +def test_b01(mydir): + c = bench.parse(mydir / 'b01.bench') + + # 2-valued + s = LogicSim(c, 8) + assert len(s.interface) == 9 + t = PackedVectors(8, len(s.interface)) + t.randomize() + s.assign(t) + s.propagate() + s.capture(t) + + # 8-valued + s = LogicSim(c, 8, 3) + t = PackedVectors(8, len(s.interface), 3) + t.randomize() + s.assign(t) + s.propagate() + s.capture(t) diff --git a/tests/test_packed_vectors.py b/tests/test_packed_vectors.py new file mode 100644 index 0000000..2f2a4a0 --- /dev/null +++ b/tests/test_packed_vectors.py @@ -0,0 +1,88 @@ +from kyupy.packed_vectors import PackedVectors + + +def test_basic(): + ba = PackedVectors(8, 1, 1) + assert '0\n0\n0\n0\n0\n0\n0\n0' == str(ba) + ba.set_value(0, 0, 1) + ba.set_value(1, 0, 'H') + ba.set_value(2, 0, 'h') + ba.set_value(3, 0, True) + ba.set_value(4, 0, 0) + ba.set_value(5, 0, 'L') + ba.set_value(6, 0, 'l') + ba.set_value(7, 0, False) + assert '1\n1\n1\n1\n0\n0\n0\n0' == str(ba) + ba.set_value(1, 0, '0') + ba.set_value(5, 0, '1') + assert '1\n0\n1\n1\n0\n1\n0\n0' == str(ba) + ba = PackedVectors(8, 1, 2) + assert '-\n-\n-\n-\n-\n-\n-\n-' == str(ba) + ba.set_value(0, 0, 1) + ba.set_value(7, 0, 0) + ba.set_value(4, 0, 'X') + assert '1\n-\n-\n-\nX\n-\n-\n0' == str(ba) + ba.set_value(4, 0, '-') + assert '1\n-\n-\n-\n-\n-\n-\n0' == str(ba) + ba = PackedVectors(8, 2, 2) + assert '--\n--\n--\n--\n--\n--\n--\n--' == str(ba) + ba.set_value(0, 0, '1') + ba.set_value(7, 1, '0') + ba.set_values(1, 'XX') + assert '1-\nXX\n--\n--\n--\n--\n--\n-0' == str(ba) + + +def test_8v(): + ba = PackedVectors(1, 8, 3) + assert '--------' == str(ba) + ba.set_values(0, r'-x01^v\/') + assert r'-X01PNFR' == str(ba) + ba.set_values(0, '-XLHPNFR') + assert r'-X01PNFR' == str(ba) + ba.set_values(0, '-xlhpnfr') + assert r'-X01PNFR' == str(ba) + p1 = PackedVectors(1, 8, 1) + p2 = PackedVectors(1, 8, 1) + p1.set_values(0, '01010101') + p2.set_values(0, '00110011') + p = PackedVectors.from_pair(p1, p2) + assert r'0FR10FR1' == str(p) + p1 = PackedVectors(1, 8, 2) + p2 = PackedVectors(1, 8, 2) + p1.set_values(0, '0101-X-X') + p2.set_values(0, '00110011') + p = PackedVectors.from_pair(p1, p2) + assert r'0FR1----' == str(p) + p1.set_values(0, '0101-X-X') + p2.set_values(0, '-X-X--XX') + p = PackedVectors.from_pair(p1, p2) + assert r'--------' == str(p) + + +def test_slicing(): + lv = PackedVectors(3, 2, 1) + assert '00\n00\n00' == str(lv) + lv.set_value(1, 0, '1') + lv.set_value(1, 1, '1') + assert '00' == lv[0] + assert '11' == lv[1] + assert 3 == len(lv) + lv2 = lv[1:3] + assert 2 == len(lv2) + assert '11' == lv2[0] + assert '00' == lv2[1] + + +def test_copy(): + lv1 = PackedVectors(8, 1, 1) + lv1.set_values_for_position(0, '01010101') + lv2 = PackedVectors(8, 1, 1) + lv2.set_values_for_position(0, '00100101') + diff = lv1.diff(lv2) + lv3 = lv1.copy(selection_mask=diff) + assert str(lv3) == '1\n0\n1' + lv4 = lv1.copy(selection_mask=~diff) + assert str(lv4) == '0\n0\n1\n0\n1' + lv5 = lv3 + lv4 + assert str(lv5) == '1\n0\n1\n0\n0\n1\n0\n1' + diff --git a/tests/test_sdf.py b/tests/test_sdf.py new file mode 100644 index 0000000..61932fa --- /dev/null +++ b/tests/test_sdf.py @@ -0,0 +1,100 @@ +from kyupy import sdf, verilog +from kyupy.saed import pin_index + + +def test_parse(): + test = ''' + (DELAYFILE + (SDFVERSION "OVI 2.1") + (DESIGN "test") + (DATE "Wed May 31 14:46:06 2017") + (VENDOR "saed90nm_max") + (PROGRAM "Synopsys Design Compiler cmos-annotated") + (VERSION "I-2013.12-ICC-SP3") + (DIVIDER /) + (VOLTAGE 1.20:1.20:1.20) + (PROCESS "TYPICAL") + (TEMPERATURE 25.00:25.00:25.00) + (TIMESCALE 1ns) + (CELL + (CELLTYPE "b14") + (INSTANCE) + (DELAY + (ABSOLUTE + (INTERCONNECT U621/ZN U19246/IN1 (0.000:0.000:0.000)) + (INTERCONNECT U13292/QN U19246/IN2 (0.001:0.001:0.001)) + (INTERCONNECT U15050/QN U19247/IN1 (0.000:0.000:0.000)) + (INTERCONNECT U13293/QN U19247/IN2 (0.000:0.000:0.000) (0.000:0.000:0.000)) + ) + ) + ) + (CELL + (CELLTYPE "INVX2") + (INSTANCE U78) + (DELAY + (ABSOLUTE + (IOPATH INP ZN (0.201:0.227:0.227) (0.250:0.271:0.271)) + ) + ) + ) + (CELL + (CELLTYPE "SDFFARX1") + (INSTANCE reg3_reg_1_0) + (DELAY + (ABSOLUTE + (IOPATH (posedge CLK) Q (0.707:0.710:0.710) (0.737:0.740:0.740)) + (IOPATH (negedge RSTB) Q () (0.909:0.948:0.948)) + (IOPATH (posedge CLK) QN (0.585:0.589:0.589) (0.545:0.550:0.550)) + (IOPATH (negedge RSTB) QN (1.546:1.593:1.593) ()) + ) + ) + (TIMINGCHECK + (WIDTH (posedge CLK) (0.284:0.284:0.284)) + (WIDTH (negedge CLK) (0.642:0.642:0.642)) + (SETUP (posedge D) (posedge CLK) (0.544:0.553:0.553)) + (SETUP (negedge D) (posedge CLK) (0.620:0.643:0.643)) + (HOLD (posedge D) (posedge CLK) (-0.321:-0.331:-0.331)) + (HOLD (negedge D) (posedge CLK) (-0.196:-0.219:-0.219)) + (RECOVERY (posedge RSTB) (posedge CLK) (-1.390:-1.455:-1.455)) + (HOLD (posedge RSTB) (posedge CLK) (1.448:1.509:1.509)) + (SETUP (posedge SE) (posedge CLK) (0.662:0.670:0.670)) + (SETUP (negedge SE) (posedge CLK) (0.698:0.702:0.702)) + (HOLD (posedge SE) (posedge CLK) (-0.435:-0.444:-0.444)) + (HOLD (negedge SE) (posedge CLK) (-0.291:-0.295:-0.295)) + (SETUP (posedge SI) (posedge CLK) (0.544:0.544:0.544)) + (SETUP (negedge SI) (posedge CLK) (0.634:0.688:0.688)) + (HOLD (posedge SI) (posedge CLK) (-0.317:-0.318:-0.318)) + (HOLD (negedge SI) (posedge CLK) (-0.198:-0.247:-0.247)) + (WIDTH (negedge RSTB) (0.345:0.345:0.345)) + ))) + ''' + df = sdf.parse(test) + assert df.name == 'test' + # print(f'DelayFile(name={df.name}, interconnects={len(df.interconnects)}, iopaths={len(df.iopaths)})') + + +def test_b14(mydir): + df = sdf.parse(mydir / 'b14.sdf.gz') + assert df.name == 'b14' + + +def test_gates(mydir): + c = verilog.parse(mydir / 'gates.v') + df = sdf.parse(mydir / 'gates.sdf') + lt = df.annotation(c, pin_index, dataset=1) + nand_a = c.cells['nandgate'].ins[0] + nand_b = c.cells['nandgate'].ins[1] + and_a = c.cells['andgate'].ins[0] + and_b = c.cells['andgate'].ins[1] + + assert lt[nand_a.index, 0, 0] == 0.103 + assert lt[nand_a.index, 0, 1] == 0.127 + + assert lt[nand_b.index, 0, 0] == 0.086 + assert lt[nand_b.index, 0, 1] == 0.104 + + assert lt[and_a.index, 0, 0] == 0.378 + assert lt[and_a.index, 0, 1] == 0.377 + + assert lt[and_b.index, 0, 0] == 0.375 + assert lt[and_b.index, 0, 1] == 0.370 diff --git a/tests/test_stil.py b/tests/test_stil.py new file mode 100644 index 0000000..08faef3 --- /dev/null +++ b/tests/test_stil.py @@ -0,0 +1,9 @@ +from kyupy import stil + + +def test_b14(mydir): + s = stil.parse(mydir / 'b14.stil.gz') + assert 10 == len(s.signal_groups) + assert 1 == len(s.scan_chains) + assert 3259 == len(s.calls) + diff --git a/tests/test_verilog.py b/tests/test_verilog.py new file mode 100644 index 0000000..1a4aef9 --- /dev/null +++ b/tests/test_verilog.py @@ -0,0 +1,9 @@ +from kyupy import verilog + + +def test_b01(mydir): + with open(mydir / 'b01.v', 'r') as f: + modules = verilog.parse(f.read()) + assert modules is not None + assert verilog.parse(mydir / 'b01.v') is not None + diff --git a/tests/test_wave_sim.py b/tests/test_wave_sim.py new file mode 100644 index 0000000..38560da --- /dev/null +++ b/tests/test_wave_sim.py @@ -0,0 +1,138 @@ +import numpy as np +from kyupy.wave_sim import WaveSim, wave_eval, TMIN, TMAX +from kyupy.logic_sim import LogicSim +from kyupy import verilog +from kyupy import sdf +from kyupy.saed import pin_index +from kyupy.packed_vectors import PackedVectors +from kyupy.wave_sim_cuda import WaveSimCuda + + +def test_wave_eval(): + # SDF specifies IOPATH delays with respect to output polarity + # SDF pulse rejection value is determined by IOPATH causing last transition and polarity of last transition + line_times = np.zeros((3, 2, 2)) + line_times[0, 0, 0] = 0.1 # A -> Z rise delay + line_times[0, 0, 1] = 0.2 # A -> Z fall delay + line_times[0, 1, 0] = 0.1 # A -> Z negative pulse limit (terminate in rising Z) + line_times[0, 1, 1] = 0.2 # A -> Z positive pulse limit + line_times[1, 0, 0] = 0.3 # as above for B -> Z + line_times[1, 0, 1] = 0.4 + line_times[1, 1, 0] = 0.3 + line_times[1, 1, 1] = 0.4 + + state = np.zeros((3*16, 1)) + TMAX # 3 waveforms of capacity 16 + state[::16, 0] = 16 # first entry is capacity + a = state[0:16, 0] + b = state[16:32, 0] + z = state[32:, 0] + sat = np.zeros((3, 2), dtype='int') + sat[0] = 0, 16 + sat[1] = 16, 16 + sat[2] = 32, 16 + + wave_eval((0b0111, 2, 0, 1), state, sat, 0, line_times) + assert TMIN == z[0] + + a[0] = TMIN + wave_eval((0b0111, 2, 0, 1), state, sat, 0, line_times) + assert TMIN == z[0] + + b[0] = TMIN + wave_eval((0b0111, 2, 0, 1), state, sat, 0, line_times) + assert TMAX == z[0] + + a[0] = 1 # A _/^^^ + b[0] = 2 # B __/^^ + wave_eval((0b0111, 2, 0, 1), state, sat, 0, line_times) + assert TMIN == z[0] # ^^^\___ B -> Z fall delay + assert 2.4 == z[1] + assert TMAX == z[2] + + a[0] = TMIN # A ^^^^^^ + b[0] = TMIN # B ^^^\__ + b[1] = 2 + wave_eval((0b0111, 2, 0, 1), state, sat, 0, line_times) + assert 2.3 == z[0] # ___/^^^ B -> Z rise delay + assert TMAX == z[1] + + # pos pulse of 0.35 at B -> 0.45 after delays + a[0] = TMIN # A ^^^^^^^^ + b[0] = TMIN + b[1] = 2 # B ^^\__/^^ + b[2] = 2.35 + wave_eval((0b0111, 2, 0, 1), state, sat, 0, line_times) + assert 2.3 == z[0] # __/^^\__ + assert 2.75 == z[1] + assert TMAX == z[2] + + # neg pulse of 0.45 at B -> 0.35 after delays + a[0] = TMIN # A ^^^^^^^^ + b[0] = 2 # B __/^^\__ + b[1] = 2.45 + b[2] = TMAX + wave_eval((0b0111, 2, 0, 1), state, sat, 0, line_times) + assert TMIN == z[0] # ^^\__/^^ + assert 2.4 == z[1] + assert 2.75 == z[2] + assert TMAX == z[3] + + # neg pulse of 0.35 at B -> 0.25 after delays (filtered) + a[0] = TMIN # A ^^^^^^^^ + b[0] = 2 # B __/^^\__ + b[1] = 2.35 + b[2] = TMAX + wave_eval((0b0111, 2, 0, 1), state, sat, 0, line_times) + assert TMIN == z[0] # ^^^^^^ + assert TMAX == z[1] + + # pos pulse of 0.25 at B -> 0.35 after delays (filtered) + a[0] = TMIN # A ^^^^^^^^ + b[0] = TMIN + b[1] = 2 # B ^^\__/^^ + b[2] = 2.25 + wave_eval((0b0111, 2, 0, 1), state, sat, 0, line_times) + assert TMAX == z[0] # ______ + + +def compare_to_logic_sim(wsim): + tests = PackedVectors(wsim.sims, len(wsim.interface), 3) + tests.randomize() + wsim.assign(tests) + wsim.propagate(8) + cap = np.zeros((len(wsim.interface), wsim.sims)) + wsim.capture(probabilities=cap) + + resp = tests.copy() + + for iidx, inode in enumerate(wsim.interface): + if len(inode.ins) > 0: + for vidx in range(wsim.sims): + resp.set_value(vidx, iidx, 0 if cap[iidx, vidx] < 0.5 else 1) + + lsim = LogicSim(wsim.circuit, len(tests), 3) + lsim.assign(tests) + lsim.propagate() + exp = tests.copy() + lsim.capture(exp) + + for i in range(8): + exp_str = exp[i].replace('R', '1').replace('F', '0').replace('P', '0').replace('N', '1') + res_str = resp[i].replace('R', '1').replace('F', '0').replace('P', '0').replace('N', '1') + assert res_str == exp_str + + +def test_b14(mydir): + c = verilog.parse(mydir / 'b14.v.gz', branchforks=True) + df = sdf.parse(mydir / 'b14.sdf.gz') + lt = df.annotation(c, pin_index) + wsim = WaveSim(c, lt, 8) + compare_to_logic_sim(wsim) + + +def test_b14_cuda(mydir): + c = verilog.parse(mydir / 'b14.v.gz', branchforks=True) + df = sdf.parse(mydir / 'b14.sdf.gz') + lt = df.annotation(c, pin_index) + wsim = WaveSimCuda(c, lt, 8) + compare_to_logic_sim(wsim)