// // # vlsir Utility Message Schemas // // Widely reused shared message-types. // syntax = "proto3"; package vlsir.utils; // Enumerated SI Prefixes enum SIPrefix { YOCTO = 0; // E-24 ZEPTO = 1; // E-21 ATTO = 2; // E-18 FEMTO = 3; // E-15 PICO = 4; // E-12 NANO = 5; // E-9 MICRO = 6; // E-6 MILLI = 7; // E-3 CENTI = 8; // E-2 DECI = 9; // E-1 DECA = 10; // E1 HECTO = 11; // E2 KILO = 12; // E3 MEGA = 13; // E6 GIGA = 14; // E9 TERA = 15; // E12 PETA = 16; // E15 EXA = 17; // E18 ZETTA = 18; // E21 YOTTA = 19; // E24 // Added v2.0 UNIT = 20; // E0 } // # Prefixed // A quantity annotated with an `SIPrefix` message Prefixed { SIPrefix prefix = 1; // The metric `SIPrefix` oneof number { // The numeric suffix, either as int, float, or string int64 integer = 2; // Int double double = 3; // Float string string = 4; // String } } // # Param-Value Enumeration // // Supports the common param-types supported in legacy HDLs // such as Verilog and SPICE. message ParamValue { oneof value { bool boolean = 1; // Boolean int64 integer = 2; // Int double double = 3; // Float string string = 4; // String-valued Param // Literal expressions, e.g. "my_param1 * 5 + sin(your_param3)" string literal = 5; // Metric-prefixed value, e.g. "11n", "15ยต" vlsir.utils.Prefixed prefixed = 6; } } // # Param Declaration // Named parameter with a sometimes over-ride-able value. message Param { // Param name string name = 1; // Value, or default ParamValue value = 2; // Description string desc = 3; } // # Domain-Qualified Name // Refers to an object outside its own namespace, at the global domain `domain`. message QualifiedName { string domain = 1; string name = 2; } // # Reference // Pointer to another Message, either defined in its own namespace (local) or // another (external). message Reference { oneof to { // Local string-valued reference. // Typically the `name` or similar field of the referent. string local = 1; // Domain-qualified external reference QualifiedName external = 2; } } // # Library Metadata // // Summary information about any of several categories of `Library`, including: // * Library domain // * (String) cell names // * Author information message LibraryMetadata { // Library Name / Domain string domain = 1; // Cell Names repeated string cell_names = 10; // Author Information AuthorMetadata author = 20; } // # Authorship Metadata // // Summary information regarding authorship, ownership, and licensing // of any of several categories of design data. // message AuthorMetadata { // Author Name string author = 1; // Copyright Information string copyright = 10; // License Information, in SPDX Format string license = 11; }