From 02f26aee29fa1b36c6a74a0489cce54509fdeabe Mon Sep 17 00:00:00 2001 From: chungshien-chai <156862023+chungshien-chai@users.noreply.github.com> Date: Wed, 27 Mar 2024 10:28:48 -0700 Subject: [PATCH] ModelConfig Enhancement (#1516) * Enhance ModelConfig to be more powerful * Empty-Commit * Incremented patch version * Test Python support * Fix compile error * Update library * Misc * Update Python version * Update directory * Should work. Hopefully * Enable Python in test install * Turn on FOEDAG_WITH_PYTHON * Why msys2 still failed * Deal with symbol array [] if contrains is read from file * Another try * Misc * Misc * Add debug * Suspect the issue, use hardcode method to confirm * Hardcode for testing * Use action * Revert * Mistake * DLL for MSCV only * Should work now * Should work now * Confuse * Simplify --------- Co-authored-by: chungshien-chai Co-authored-by: alaindargelas <63669492+alaindargelas@users.noreply.github.com> --- .../install_centos_dependencies_build.sh | 1 + .../install_ubuntu_dependencies_build.sh | 3 +- .github/workflows/main.yml | 3 +- CMakeLists.txt | 13 +- cmake/FindCustomPython3.cmake | 52 + src/Compiler/Constraints.cpp | 42 +- src/Configuration/CFGCommon/CFGCommon.cpp | 58 +- src/Configuration/CFGCommon/CFGCommon.h | 6 + src/Configuration/CFGCommon/CMakeLists.txt | 8 + src/Configuration/ModelConfig/ModelConfig.cpp | 34 +- src/Configuration/ModelConfig/ModelConfig.h | 17 +- .../ModelConfig/ModelConfig_IO.cpp | 142 +- tests/TestInstall/CMakeLists.txt | 16 +- tests/unittest/CFGCommon/CFGCommon_test.cpp | 71 +- tests/unittest/CMakeLists.txt | 11 +- .../compiler_tcl_infra_common.cpp | 30 + .../compiler_tcl_infra_common.h | 4 + .../ModelConfig/ModelConfig_IO_test.cpp | 33 +- .../unittest/ModelConfig/ModelConfig_test.cpp | 62 +- .../apis/config_attributes.mapping.json | 86 +- .../golden/model_config.golden.ppdb.json | 118 -- .../ModelConfig/golden/model_config.ppdb.json | 235 +++ ...ig_bin.golden.bin => model_config_bin.bin} | 0 ...ig_bit.golden.txt => model_config_bit.txt} | 0 ...ail.golden.txt => model_config_detail.txt} | 0 ...t => model_config_io_bitstream.detail.bit} | 236 +-- ...ig_tcl.golden.txt => model_config_tcl.txt} | 0 ...ic.golden.txt => model_config_top_ric.txt} | 0 ..._word.golden.txt => model_config_word.txt} | 0 .../model_config_netlist.ppdb.json | 43 + .../unittest/ModelConfig/ric/CLK_BUF.api.json | 1362 +++++++++++++++++ tests/unittest/ModelConfig/ric/I_BUF.api.json | 30 +- .../unittest/ModelConfig/ric/I_DELAY.api.json | 2 +- tests/unittest/ModelConfig/ric/O_BUF.api.json | 14 +- .../unittest/ModelConfig/ric/O_DELAY.api.json | 2 +- 35 files changed, 2341 insertions(+), 393 deletions(-) create mode 100644 cmake/FindCustomPython3.cmake delete mode 100644 tests/unittest/ModelConfig/golden/model_config.golden.ppdb.json create mode 100644 tests/unittest/ModelConfig/golden/model_config.ppdb.json rename tests/unittest/ModelConfig/golden/{model_config_bin.golden.bin => model_config_bin.bin} (100%) rename tests/unittest/ModelConfig/golden/{model_config_bit.golden.txt => model_config_bit.txt} (100%) rename tests/unittest/ModelConfig/golden/{model_config_detail.golden.txt => model_config_detail.txt} (100%) rename tests/unittest/ModelConfig/golden/{model_config_io_bitstream.golden.detail.bit => model_config_io_bitstream.detail.bit} (98%) rename tests/unittest/ModelConfig/golden/{model_config_tcl.golden.txt => model_config_tcl.txt} (100%) rename tests/unittest/ModelConfig/golden/{model_config_top_ric.golden.txt => model_config_top_ric.txt} (100%) rename tests/unittest/ModelConfig/golden/{model_config_word.golden.txt => model_config_word.txt} (100%) create mode 100644 tests/unittest/ModelConfig/ric/CLK_BUF.api.json diff --git a/.github/workflows/install_centos_dependencies_build.sh b/.github/workflows/install_centos_dependencies_build.sh index 11b3783a9..e65dedb89 100644 --- a/.github/workflows/install_centos_dependencies_build.sh +++ b/.github/workflows/install_centos_dependencies_build.sh @@ -31,6 +31,7 @@ yum install -y libusbx-devel libusb-devel yum install -y pkgconfig yum install -y perl-IPC-Cmd yum install -y alsa-lib mesa-dri-drivers openssl openssl-devel sudo +yum install -y python3-devel ln -s $PWD/cmake-3.24.4-linux-x86_64/bin/ctest /usr/bin/ctest # downloads the Qt6 artifact from a specific URL diff --git a/.github/workflows/install_ubuntu_dependencies_build.sh b/.github/workflows/install_ubuntu_dependencies_build.sh index 248ca9629..4db59cfa4 100755 --- a/.github/workflows/install_ubuntu_dependencies_build.sh +++ b/.github/workflows/install_ubuntu_dependencies_build.sh @@ -15,7 +15,8 @@ sudo apt install -y \ yosys \ automake \ libusb-1.0-0-dev \ - pkg-config + pkg-config \ + python3-dev wget -qO- https://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo tee /etc/apt/trusted.gpg.d/lunarg.asc sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-jammy.list http://packages.lunarg.com/vulkan/lunarg-vulkan-jammy.list diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 140e3a55d..01cd244e1 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -253,7 +253,8 @@ jobs: mingw-w64-x86_64-tcl mingw-w64-x86_64-zlib mingw-w64-x86_64-libusb - + python-devel + - name: Configure shell environment variables run: | export CWD=`pwd` diff --git a/CMakeLists.txt b/CMakeLists.txt index 8b8cccb3a..63edae46e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -133,15 +133,16 @@ endif() set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin) +set(FOEDAG_WITH_PYTHON ON) # Python if (FOEDAG_WITH_PYTHON) -find_package(Python3 3.3 REQUIRED COMPONENTS Interpreter Development) -# find_package(SWIG 3.0 REQUIRED) -message(STATUS "Python3_LIBRARIES = ${Python3_LIBRARIES}") -message(STATUS "Python3_EXECUTABLE = ${Python3_EXECUTABLE}") -message(STATUS "Python3_INCLUDE_DIRS = ${Python3_INCLUDE_DIRS}") -message(STATUS "Python3_RUNTIME_LIBRARY_DIRS = ${Python3_RUNTIME_LIBRARY_DIRS}") + set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/") + find_package(CustomPython3 REQUIRED) + message(STATUS "Python3_LIBRARIES (main) = ${Python3_LIBRARIES}") + message(STATUS "Python3_EXECUTABLE (main) = ${Python3_EXECUTABLE}") + message(STATUS "Python3_INCLUDE_DIRS (main) = ${Python3_INCLUDE_DIRS}") + message(STATUS "Python3_RUNTIME_LIBRARY_DIRS (main) = ${Python3_RUNTIME_LIBRARY_DIRS}") endif() if(NOT NO_TCMALLOC) diff --git a/cmake/FindCustomPython3.cmake b/cmake/FindCustomPython3.cmake new file mode 100644 index 000000000..93fb6c9dd --- /dev/null +++ b/cmake/FindCustomPython3.cmake @@ -0,0 +1,52 @@ +# - Try to find the freetype library +# Once done this defines +# +# Python3_LIBRARIES - fullpath of the python3 library +# Python3_INCLUDE_DIRS - include folder of python3 +# Python3_RUNTIME_LIBRARY_DIRS - bin folder of python3 +# Python3_EXECUTABLE - exe of python3 +# Python3_FOUND - set when all four are found + +# Work for msys2 only + +# Copyright (c) 2024 Chai, Chung Shien +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. +message("FindCustomPython3 MINGW: ${MINGW}") +message("FindCustomPython3 MSVC: ${MSVC}") +message("FindCustomPython3 WIN32: ${WIN32}") +set(PYTHON3_FIND_PATH "C:/msys64/mingw64") +if ((MINGW OR (NOT MSVC AND WIN32)) AND EXISTS ${PYTHON3_FIND_PATH}) + file(GLOB potential_python3_libs "${PYTHON3_FIND_PATH}/lib/libpython3.*.dll.a") + if (potential_python3_libs) + list (GET potential_python3_libs 0 Python3_LIBRARIES) + if (Python3_LIBRARIES AND EXISTS ${Python3_LIBRARIES}) + get_filename_component(python3_filename ${Python3_LIBRARIES} NAME) + string(REGEX REPLACE "libpython" "python" python3_filename ${python3_filename}) + string(REGEX REPLACE ".dll.a" "" python3_filename ${python3_filename}) + set(Python3_INCLUDE_DIRS ${PYTHON3_FIND_PATH}/include/${python3_filename}) + set(Python3_RUNTIME_LIBRARY_DIRS ${PYTHON3_FIND_PATH}/bin) + set(Python3_EXECUTABLE ${Python3_RUNTIME_LIBRARY_DIRS}/${python3_filename}.exe) + if (Python3_INCLUDE_DIRS AND EXISTS ${Python3_INCLUDE_DIRS}) + if (Python3_RUNTIME_LIBRARY_DIRS AND EXISTS ${Python3_RUNTIME_LIBRARY_DIRS}) + if (Python3_EXECUTABLE AND EXISTS ${Python3_EXECUTABLE}) + set(Python3_FOUND TRUE) + else() + message(SEND_ERROR "${Python3_EXECUTABLE} does not exist") + endif() + else() + message(SEND_ERROR "${Python3_RUNTIME_LIBRARY_DIRS} does not exist") + endif() + else() + message(SEND_ERROR "${Python3_INCLUDE_DIRS} does not exist") + endif() + else() + message(SEND_ERROR "Fail to look for libpython3.*.dll.a in ${PYTHON3_FIND_PATH}/lib") + endif() + else() + message(SEND_ERROR "Fail to look for libpython3.*.dll.a in ${PYTHON3_FIND_PATH}/lib") + endif() +else() + find_package(Python3 3.3 REQUIRED COMPONENTS Interpreter Development) +endif() \ No newline at end of file diff --git a/src/Compiler/Constraints.cpp b/src/Compiler/Constraints.cpp index 474650484..c3e743cbe 100644 --- a/src/Compiler/Constraints.cpp +++ b/src/Compiler/Constraints.cpp @@ -128,6 +128,41 @@ static std::vector constraint_procs = { "set_pvt", "set_pvt_min_max", "default_operating_conditions", "cell_regexp", "cell_regexp_hsc", "port_regexp", "port_regexp_hsc"}; +static std::string get_rid_array_name(const std::string& name) { + std::string final_name = name; + uint32_t tracking = 0; + size_t index = final_name.size() - 1; + for (auto c = final_name.rbegin(); c < final_name.rend(); c++, index--) { + if (tracking == 0) { + if (*c == '%') { + tracking++; + } else { + break; + } + } else if (tracking == 1) { + if (*c >= '0' && *c <= '9') { + tracking++; + } else { + break; + } + } else if (tracking == 2) { + if (*c >= '0' && *c <= '9') { + continue; + } else if (*c == '@') { + tracking++; + break; + } else { + break; + } + } + } + if (tracking == 3 && index > 0) { + final_name[index] = '['; + final_name[final_name.size() - 1] = ']'; + } + return final_name; +} + void Constraints::registerCommands(TclInterpreter* interp) { // SDC constraints // https://github.com/The-OpenROAD-Project/OpenSTA/blob/master/tcl/Sdc.tcl @@ -613,6 +648,11 @@ void Constraints::registerCommands(TclInterpreter* interp) { return TCL_ERROR; } Constraints* constraints = (Constraints*)clientData; +#if 0 + for (int i = 0; i < argc; i++) { + constraints->GetCompiler()->Message(std::string{"CONSTRAINT set_property DEBUG: "} + std::string{argv[i]}); + } +#endif if (!verifyTimingLimits(argc, argv)) { Tcl_AppendResult(interp, TimingLimitErrorMessage, nullptr); return TCL_ERROR; @@ -648,7 +688,7 @@ void Constraints::registerCommands(TclInterpreter* interp) { } for (int i = 3; i < argc; i++) { // No duplication - std::string obj = std::string(argv[i]); + std::string obj = get_rid_array_name(std::string(argv[i])); if (CFG_find_string_in_vector(objects, obj) < 0) { objects.push_back(obj); } diff --git a/src/Configuration/CFGCommon/CFGCommon.cpp b/src/Configuration/CFGCommon/CFGCommon.cpp index c2c4c2c4c..bf29594aa 100644 --- a/src/Configuration/CFGCommon/CFGCommon.cpp +++ b/src/Configuration/CFGCommon/CFGCommon.cpp @@ -13,7 +13,12 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ + +// clang-format off +#include + #include "CFGCommon.h" +// clang-format on #ifdef _WIN32 #include @@ -699,4 +704,55 @@ bool CFG_compare_two_binary_files(const std::string& filepath1, CFG_read_binary_file(filepath2, data2); return (data1.size() == data2.size()) && (data1.size() == 0 || memcmp(&data1[0], &data2[0], data1.size()) == 0); -} \ No newline at end of file +} + +static void CFG_Python_get_string( + PyObject* dict, const std::string& key, + std::map& str_maps) { + PyObject* value = PyDict_GetItemString(dict, key.c_str()); + if (value != nullptr) { + CFG_ASSERT_MSG(PyUnicode_Check(value), + "Python Dict key=%s is expected to be string, but it is not", + key.c_str()); + str_maps[key] = std::string(PyUnicode_AsUTF8(value)); + // Py_DECREF(value); + } +} + +static void CFG_Python_get_u32(PyObject* dict, const std::string& key, + std::map& int_maps) { + PyObject* value = PyDict_GetItemString(dict, key.c_str()); + if (value != nullptr) { + CFG_ASSERT_MSG(PyLong_Check(value), + "Python Dict key=%s is expected to be long, but it is not", + key.c_str()); + int_maps[key] = (uint32_t)(PyLong_AsLong(value)); + // Py_DECREF(value); + } +} + +void CFG_Python(std::vector commands, + std::vector strs, std::vector ints, + std::map& str_maps, + std::map& int_maps) { + Py_Initialize(); + PyObject* dict = PyDict_New(); + PyObject* o = nullptr; + for (auto& command : commands) { +#if 0 + printf("Python Command: %s\n", command.c_str()); +#endif + o = PyRun_String(command.c_str(), Py_single_input, dict, dict); + } + for (auto key : strs) { + CFG_Python_get_string(dict, key, str_maps); + } + for (auto key : ints) { + CFG_Python_get_u32(dict, key, int_maps); + } + if (o != nullptr) { + Py_DECREF(o); + } + Py_DECREF(dict); + Py_Finalize(); +} diff --git a/src/Configuration/CFGCommon/CFGCommon.h b/src/Configuration/CFGCommon/CFGCommon.h index 1d3b922b2..244ba8593 100644 --- a/src/Configuration/CFGCommon/CFGCommon.h +++ b/src/Configuration/CFGCommon/CFGCommon.h @@ -6,6 +6,7 @@ #include #include #include +#include #include #include #include @@ -193,6 +194,11 @@ bool CFG_compare_two_text_files(const std::string& filepath1, bool CFG_compare_two_binary_files(const std::string& filepath1, const std::string& filepath2); +void CFG_Python(std::vector commands, + std::vector strs, std::vector ints, + std::map& str_maps, + std::map& int_maps); + #define CFG_POST_MSG(...) \ { CFG_post_msg(CFG_print(__VA_ARGS__)); } diff --git a/src/Configuration/CFGCommon/CMakeLists.txt b/src/Configuration/CFGCommon/CMakeLists.txt index 43da74382..fa61dd245 100644 --- a/src/Configuration/CFGCommon/CMakeLists.txt +++ b/src/Configuration/CFGCommon/CMakeLists.txt @@ -28,6 +28,13 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/../../../cmake/") +find_package(CustomPython3 REQUIRED) +message(STATUS "Python3_LIBRARIES (CFG) = ${Python3_LIBRARIES}") +message(STATUS "Python3_INCLUDE_DIRS (CFG) = ${Python3_INCLUDE_DIRS}") +message(STATUS "Python3_RUNTIME_LIBRARY_DIRS (CFG) = ${Python3_RUNTIME_LIBRARY_DIRS}") +include_directories(${Python3_INCLUDE_DIRS}) + if (MSVC) else() set(CMAKE_CXX_FLAGS_DEBUG @@ -67,6 +74,7 @@ add_library( CFGArg.cpp ${CMAKE_CURRENT_BINARY_DIR}/CFGArg_auto.h ) +target_link_libraries(${subsystem} ${Python3_LIBRARIES}) ################### # diff --git a/src/Configuration/ModelConfig/ModelConfig.cpp b/src/Configuration/ModelConfig/ModelConfig.cpp index 83b1e18d6..37a031bca 100644 --- a/src/Configuration/ModelConfig/ModelConfig.cpp +++ b/src/Configuration/ModelConfig/ModelConfig.cpp @@ -221,24 +221,26 @@ class ModelConfig_DEVICE { } void set_attr(const std::string& instance, const std::string& name, const std::string& value, const std::string& reason) { - /* - printf("set_attr: %s: %s -> %s\n", instance.c_str(), name.c_str(), - value.c_str()); - */ +#if 0 + printf("DEBUG: Design Set Attr 1: %s : %s -> %s\n", instance.c_str(), + name.c_str(), value.c_str()); +#endif ModelConfig_BITFIELD* bitfield = get_bitfield(instance, name); CFG_ASSERT_MSG(bitfield != nullptr, "Could not find bitfield '%s' for block instance '%s'", name.c_str(), instance.c_str()); - uint32_t v = 0; - if (!is_number(value, v)) { - CFG_ASSERT(bitfield->m_type != nullptr); - CFG_ASSERT(bitfield->m_type.get() != nullptr); - v = bitfield->m_type.get()->get_enum_value(value); + if (value != "__DONT__") { + uint32_t v = 0; + if (!is_number(value, v)) { + CFG_ASSERT(bitfield->m_type != nullptr); + CFG_ASSERT(bitfield->m_type.get() != nullptr); + v = bitfield->m_type.get()->get_enum_value(value); + } + CFG_ASSERT(bitfield->m_size == 32 || + (v < ((uint32_t)(1) << bitfield->m_size))); + bitfield->m_value = v; + bitfield->reasons.push_back(reason); } - CFG_ASSERT(bitfield->m_size == 32 || - (v < ((uint32_t)(1) << bitfield->m_size))); - bitfield->m_value = v; - bitfield->reasons.push_back(reason); } void set_attr(const std::map& options, std::string reason = "") { @@ -304,7 +306,8 @@ class ModelConfig_DEVICE { reason = CFG_print("%s [from %s]", reason.c_str(), instance.c_str()); } #if 0 - printf("DEBUG: Design Set Attr: %s : %s -> %s\n", final_instance.c_str(), key_str.c_str(), value_str.c_str()); + printf("DEBUG: Design Set Attr 0: %s : %s -> %s\n", + final_instance.c_str(), key_str.c_str(), value_str.c_str()); #endif set_attr({{"instance", final_instance}, {"name", key_str}, @@ -338,7 +341,8 @@ class ModelConfig_DEVICE { } void set_design(const std::string& filepath) { std::ifstream file(filepath.c_str()); - CFG_ASSERT(file.is_open() && file.good()); + CFG_ASSERT_MSG(file.is_open() && file.good(), "Cannot open design file %s", + filepath.c_str()); nlohmann::json api = nlohmann::json::parse(file); file.close(); // Must start with a dict/map diff --git a/src/Configuration/ModelConfig/ModelConfig.h b/src/Configuration/ModelConfig/ModelConfig.h index 1ff66abad..f4cb76a9f 100644 --- a/src/Configuration/ModelConfig/ModelConfig.h +++ b/src/Configuration/ModelConfig/ModelConfig.h @@ -30,6 +30,8 @@ along with this program. If not, see . struct CFGCommon_ARG; +enum ARG_PROPERTY { IS_NONE_ARG, IS_ARG, IS_ARG_WITH_DEFAULT }; + namespace FOEDAG { void model_config_entry(CFGCommon_ARG* cmdarg); @@ -56,14 +58,19 @@ class ModelConfig_IO { static void set_config_attribute(nlohmann::json& config_attributes, const std::string& module, nlohmann::json inputs, - nlohmann::json mapping); + nlohmann::json mapping, + std::map& args, + nlohmann::json define); static void set_config_attribute(nlohmann::json& config_attributes, nlohmann::json inputs, nlohmann::json rules, nlohmann::json results, - nlohmann::json neg_results); + nlohmann::json neg_results, + std::map& args, + nlohmann::json define); static void set_config_attribute(nlohmann::json& config_attributes, nlohmann::json& results, - std::map& args); + std::map& args, + nlohmann::json define); static void set_config_attribute(nlohmann::json& config_attributes, std::map& args, nlohmann::json object, std::string key, @@ -71,6 +78,10 @@ class ModelConfig_IO { static bool config_attribute_rule_match( nlohmann::json inputs, const std::string& input, nlohmann::json options, std::map& args); + static void define_args(nlohmann::json define, + std::map& args); + static ARG_PROPERTY get_arg_info(std::string str, std::string& name, + std::string& value); }; } // namespace FOEDAG diff --git a/src/Configuration/ModelConfig/ModelConfig_IO.cpp b/src/Configuration/ModelConfig/ModelConfig_IO.cpp index bad14b601..5fe610261 100644 --- a/src/Configuration/ModelConfig/ModelConfig_IO.cpp +++ b/src/Configuration/ModelConfig/ModelConfig_IO.cpp @@ -92,12 +92,13 @@ void ModelConfig_IO::assign_json_object(nlohmann::json& object, CFG_ASSERT(object[key].is_string()); std::string existing_value = std::string(object[key]); if (existing_value.empty()) { - CFG_POST_MSG("Assign %s%s %s to %s", feature.c_str(), key.c_str(), + CFG_POST_MSG("Assign %s%s value:%s to \"%s\"", feature.c_str(), key.c_str(), value.c_str(), name.c_str()); object[key] = value; } else if (existing_value != value) { - CFG_POST_MSG("Overwrite %s%s %s to %s (existing: %s)", feature.c_str(), - key.c_str(), name.c_str(), existing_value.c_str()); + CFG_POST_MSG("Overwrite %s%s value:%s to \"%s\" (value existing: %s)", + feature.c_str(), key.c_str(), name.c_str(), value.c_str(), + existing_value.c_str()); object[key] = value; } } @@ -141,7 +142,7 @@ void ModelConfig_IO::merge_property_instance( CFG_ASSERT(((nlohmann::json)(iter.key())).is_string()); std::string key = std::string(iter.key()); if (CFG_find_string_in_vector({"WIRE", "CLK_BUF"}, module) >= 0 && - key != "PACKAGE_PIN") { + key != "PACKAGE_PIN" && key != "ROUTE_TO_FABRIC_CLK") { continue; } CFG_ASSERT(iter.value().is_string()); @@ -202,11 +203,15 @@ void ModelConfig_IO::set_config_attributes(nlohmann::json& instances, CFG_ASSERT(instance.is_object()); CFG_ASSERT(instance.contains("module")); CFG_ASSERT(instance["module"].is_string()); + CFG_ASSERT(instance.contains("location")); + CFG_ASSERT(instance["location"].is_string()); CFG_ASSERT(!instance.contains("config_attributes")); std::string module = std::string(instance["module"]); nlohmann::json parameters = nlohmann::json::object(); nlohmann::json properties = nlohmann::json::object(); + nlohmann::json define = nlohmann::json::object(); instance["config_attributes"] = nlohmann::json::array(); + std::string location = std::string(instance["location"]); if (instance.contains("parameters")) { parameters = instance["parameters"]; CFG_ASSERT(parameters.is_object()); @@ -215,10 +220,18 @@ void ModelConfig_IO::set_config_attributes(nlohmann::json& instances, properties = instance["properties"]; CFG_ASSERT(properties.is_object()); } + if (mapping.contains("__define__")) { + define = mapping["__define__"]; + CFG_ASSERT(define.is_object()); + } + parameters["__location__"] = location; + properties["__location__"] = location; + std::map args = {{"__location__", location}}; set_config_attribute(instance["config_attributes"], module, parameters, - mapping["parameters"]); + mapping["parameters"], args, define); + args = {{"__location__", location}}; set_config_attribute(instance["config_attributes"], module, properties, - mapping["properties"]); + mapping["properties"], args, define); // Remove config_attributes if the size=0 if (instance["config_attributes"].size() == 0) { instance.erase("config_attributes"); @@ -226,10 +239,10 @@ void ModelConfig_IO::set_config_attributes(nlohmann::json& instances, } } -void ModelConfig_IO::set_config_attribute(nlohmann::json& config_attributes, - const std::string& module, - nlohmann::json inputs, - nlohmann::json mapping) { +void ModelConfig_IO::set_config_attribute( + nlohmann::json& config_attributes, const std::string& module, + nlohmann::json inputs, nlohmann::json mapping, + std::map& args, nlohmann::json define) { CFG_ASSERT(config_attributes.is_array()); CFG_ASSERT(mapping.is_object()); for (auto& iter : mapping.items()) { @@ -249,23 +262,21 @@ void ModelConfig_IO::set_config_attribute(nlohmann::json& config_attributes, neg_results = rule_result["neg_results"]; } set_config_attribute(config_attributes, inputs, rule_result["rules"], - rule_result["results"], neg_results); + rule_result["results"], neg_results, args, define); } } } -void ModelConfig_IO::set_config_attribute(nlohmann::json& config_attributes, - nlohmann::json inputs, - nlohmann::json rules, - nlohmann::json results, - nlohmann::json neg_results) { +void ModelConfig_IO::set_config_attribute( + nlohmann::json& config_attributes, nlohmann::json inputs, + nlohmann::json rules, nlohmann::json results, nlohmann::json neg_results, + std::map& args, nlohmann::json define) { CFG_ASSERT(config_attributes.is_array()); CFG_ASSERT(results.is_object()); CFG_ASSERT(neg_results.is_object()); size_t expected_match = rules.size(); CFG_ASSERT(expected_match); size_t match = 0; - std::map args; for (auto& rule : rules.items()) { nlohmann::json key = rule.key(); CFG_ASSERT(key.is_string()); @@ -275,15 +286,15 @@ void ModelConfig_IO::set_config_attribute(nlohmann::json& config_attributes, } } if (expected_match == match) { - set_config_attribute(config_attributes, results, args); + set_config_attribute(config_attributes, results, args, define); } else { - set_config_attribute(config_attributes, neg_results, args); + set_config_attribute(config_attributes, neg_results, args, define); } } void ModelConfig_IO::set_config_attribute( nlohmann::json& config_attributes, nlohmann::json& results, - std::map& args) { + std::map& args, nlohmann::json define) { CFG_ASSERT(config_attributes.is_array()); CFG_ASSERT(results.is_object()); for (auto& result : results.items()) { @@ -298,14 +309,32 @@ void ModelConfig_IO::set_config_attribute( for (nlohmann::json value : values) { CFG_ASSERT(value.is_object()); nlohmann::json object = nlohmann::json::object(); - for (auto& str : std::vector( - {"__name__", "__mapped_name__", "__optional__"})) { + for (auto& str : + std::vector({"__name__", "__mapped_name__", + "__optional__", "__define__"})) { if (value.contains(str)) { CFG_ASSERT(value[str].is_string()); object[str] = std::string(value[str]); value.erase(str); } } + if (object.contains("__define__")) { + std::vector definitions = CFG_split_string( + std::string(object["__define__"]), ";", 0, false); + for (auto definition : definitions) { + CFG_ASSERT(define.size()); + CFG_ASSERT(define.contains(definition)); + define_args(define[definition], args); + } + object.erase("__define__"); + if (object.contains("__mapped_name__")) { + std::string value = std::string(object["__mapped_name__"]); + for (auto arg : args) { + value = CFG_replace_string(value, arg.first, arg.second, false); + } + object["__mapped_name__"] = value; + } + } for (auto& sub_result : value.items()) { CFG_ASSERT(((nlohmann::json)(sub_result.key())).is_string()); std::string sub_key = (std::string)(sub_result.key()); @@ -350,16 +379,79 @@ bool ModelConfig_IO::config_attribute_rule_match( } } else { std::string option = std::string(options); - if (option.size() >= 7 && option.find("__arg") == 0 && - option.rfind("__") == (option.size() - 2)) { - args[option] = inputs[input]; + std::string arg_name = ""; + std::string default_value = ""; + if (get_arg_info(option, arg_name, default_value) != IS_NONE_ARG) { + args[arg_name] = inputs[input]; match = true; } else if (inputs[input] == option) { match = true; } } + } else { + if (options.is_string()) { + std::string option = std::string(options); + std::string arg_name = ""; + std::string default_value = ""; + if (get_arg_info(option, arg_name, default_value) == + IS_ARG_WITH_DEFAULT) { + args[arg_name] = default_value; + match = true; + } + } } return match; } +void ModelConfig_IO::define_args(nlohmann::json define, + std::map& args) { + CFG_ASSERT(define.is_object()); + for (auto& iter : define.items()) { + CFG_ASSERT(((nlohmann::json)(iter.key())).is_string()); + std::string key = std::string(iter.key()); + nlohmann::json value = iter.value(); + CFG_ASSERT(value.is_array()); + std::vector commands; + std::map str_maps; + std::map int_maps; + if (args.find(key) != args.end()) { + args.erase(key); + } + for (nlohmann::json d : value) { + CFG_ASSERT(d.is_string()); + std::string command = std::string(d); + for (auto arg : args) { + command = CFG_replace_string(command, arg.first, arg.second, false); + } + commands.push_back(command); + } + CFG_Python(commands, {key}, {}, str_maps, int_maps); + CFG_ASSERT(str_maps.size() == 1); + CFG_ASSERT(str_maps.find(key) != str_maps.end()); + args[key] = str_maps[key]; + } +} + +ARG_PROPERTY ModelConfig_IO::get_arg_info(std::string str, std::string& name, + std::string& value) { + ARG_PROPERTY result = IS_NONE_ARG; + if (str.size() >= 7 && str.find("__arg") == 0 && + str.rfind("__") == (str.size() - 2)) { + // This is an argument format string + name = str; + value = ""; + result = IS_ARG; + size_t index0 = str.find("{default:"); + size_t index1 = str.find("}"); + if (index0 != std::string::npos && index1 != std::string::npos && + index1 > (index0 + 9)) { + size_t default_size = index1 - index0 + 1; + value = str.substr(index0 + 9, default_size - 10); + name = str.erase(index0, default_size); + result = IS_ARG_WITH_DEFAULT; + } + } + return result; +} + } // namespace FOEDAG diff --git a/tests/TestInstall/CMakeLists.txt b/tests/TestInstall/CMakeLists.txt index 2539946ad..645279172 100644 --- a/tests/TestInstall/CMakeLists.txt +++ b/tests/TestInstall/CMakeLists.txt @@ -88,14 +88,16 @@ endif(IPA) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) +set(FOEDAG_WITH_PYTHON ON) # Python if (FOEDAG_WITH_PYTHON) -find_package(Python3 3.3 REQUIRED COMPONENTS Interpreter Development) -message(STATUS "Python3_LIBRARIES = ${Python3_LIBRARIES}") -message(STATUS "Python3_EXECUTABLE = ${Python3_EXECUTABLE}") -message(STATUS "Python3_INCLUDE_DIRS = ${Python3_INCLUDE_DIRS}") -message(STATUS "Python3_RUNTIME_LIBRARY_DIRS = ${Python3_RUNTIME_LIBRARY_DIRS}") + set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/") + find_package(CustomPython3 REQUIRED) + message(STATUS "Python3_LIBRARIES = ${Python3_LIBRARIES}") + message(STATUS "Python3_EXECUTABLE = ${Python3_EXECUTABLE}") + message(STATUS "Python3_INCLUDE_DIRS = ${Python3_INCLUDE_DIRS}") + message(STATUS "Python3_RUNTIME_LIBRARY_DIRS = ${Python3_RUNTIME_LIBRARY_DIRS}") endif() if (MSVC) @@ -256,14 +258,14 @@ elseif (UNIX) ) endif() -if (WIN32) +if (MSVC) if (FOEDAG_WITH_PYTHON) add_custom_command( TARGET test_hellofoedag POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${Python3_RUNTIME_LIBRARY_DIRS}/python${Python3_VERSION_MAJOR}${Python3_VERSION_MINOR}$<$:_d>.dll - $) + $) endif() endif() diff --git a/tests/unittest/CFGCommon/CFGCommon_test.cpp b/tests/unittest/CFGCommon/CFGCommon_test.cpp index af438639b..b940d94fa 100644 --- a/tests/unittest/CFGCommon/CFGCommon_test.cpp +++ b/tests/unittest/CFGCommon/CFGCommon_test.cpp @@ -20,6 +20,7 @@ along with this program. If not, see . */ #include "Configuration/CFGCommon/CFGCommon.h" + #include "gtest/gtest.h" TEST(CFGCommon, test_replace_string) { @@ -35,12 +36,14 @@ TEST(CFGCommon, test_replace_string) { } TEST(CFGCommon, test_change_directory_to_linux_format) { - std::string linux_format = CFG_change_directory_to_linux_format("c:\\\\\\ abc \\ efg /////xyz //123"); + std::string linux_format = CFG_change_directory_to_linux_format( + "c:\\\\\\ abc \\ efg /////xyz //123"); EXPECT_EQ(linux_format, "c:/ abc / efg /xyz /123"); } TEST(CFGCommon, test_configuration_relative_path) { - std::string path = CFG_get_configuration_relative_path("/usr/src/ConfigurationRS/abc"); + std::string path = + CFG_get_configuration_relative_path("/usr/src/ConfigurationRS/abc"); EXPECT_EQ(path, "ConfigurationRS/abc"); } @@ -102,7 +105,8 @@ TEST(CFGCommon, test_string_to_u64_conversion) { */ // Decimal init = 789; - EXPECT_EQ(CFG_convert_string_to_u64("joqekdvmpq", false, &status, &init), 789); + EXPECT_EQ(CFG_convert_string_to_u64("joqekdvmpq", false, &status, &init), + 789); EXPECT_EQ(status, false); // Binary EXPECT_EQ(CFG_convert_string_to_u64("b000111102", false, &status), 0); @@ -113,7 +117,9 @@ TEST(CFGCommon, test_string_to_u64_conversion) { status = true; EXPECT_EQ(CFG_convert_string_to_u64("b11111111111111111111111111111111111111" "111111111111111111111111111111111111111" - "1111111111111111111111111111111111", false, &status), 0); + "1111111111111111111111111111111111", + false, &status), + 0); EXPECT_EQ(status, false); status = true; // Hex @@ -123,7 +129,9 @@ TEST(CFGCommon, test_string_to_u64_conversion) { EXPECT_EQ(CFG_convert_string_to_u64("0x", false, &status), 0); EXPECT_EQ(status, false); status = true; - EXPECT_EQ(CFG_convert_string_to_u64("0x111111111111111111111111111111111", false, &status), 0); + EXPECT_EQ(CFG_convert_string_to_u64("0x111111111111111111111111111111111", + false, &status), + 0); EXPECT_EQ(status, false); status = true; // HDL Binary @@ -135,7 +143,9 @@ TEST(CFGCommon, test_string_to_u64_conversion) { status = true; EXPECT_EQ(CFG_convert_string_to_u64("'b11111111111111111111111111111111111111" "111111111111111111111111111111111111111" - "1111111111111111111111111111111111", false, &status), 0); + "1111111111111111111111111111111111", + false, &status), + 0); EXPECT_EQ(status, false); status = true; // HDL Decimal @@ -152,7 +162,9 @@ TEST(CFGCommon, test_string_to_u64_conversion) { EXPECT_EQ(CFG_convert_string_to_u64("'h", false, &status), 0); EXPECT_EQ(status, false); status = true; - EXPECT_EQ(CFG_convert_string_to_u64("'hCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", false, &status), 0); + EXPECT_EQ(CFG_convert_string_to_u64("'hCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", false, + &status), + 0); EXPECT_EQ(status, false); status = true; // Shift @@ -180,13 +192,16 @@ TEST(CFGCommon, test_string_to_u64_conversion) { EXPECT_EQ(CFG_convert_string_to_u64(" 1 << ab", false, &status), 0); EXPECT_EQ(status, false); status = true; - //CFG_INTERNAL_ERROR("stop"); + // CFG_INTERNAL_ERROR("stop"); } TEST(CFGCommon, test_find_item_in_vector) { - EXPECT_EQ(CFG_find_string_in_vector({"I", "you", "we", "they", "he"}, "she"), -1); - EXPECT_EQ(CFG_find_string_in_vector({"I", "you", "we", "they", "he"}, "you"), 1); - EXPECT_EQ(CFG_find_string_in_vector({"I", "you", "we", "they", "he"}, "he"), 4); + EXPECT_EQ(CFG_find_string_in_vector({"I", "you", "we", "they", "he"}, "she"), + -1); + EXPECT_EQ(CFG_find_string_in_vector({"I", "you", "we", "they", "he"}, "you"), + 1); + EXPECT_EQ(CFG_find_string_in_vector({"I", "you", "we", "they", "he"}, "he"), + 4); EXPECT_EQ(CFG_find_u32_in_vector({0, 1, 2, 3, 4}, 5), -1); EXPECT_EQ(CFG_find_u32_in_vector({0, 1, 2, 3, 4}, 3), 3); EXPECT_EQ(CFG_find_u32_in_vector({0, 1, 2, 3, 4}, 0), 0); @@ -226,7 +241,7 @@ TEST(CFGCommon, test_string_split) { results = CFG_split_string(string, "!"); EXPECT_EQ(results.size(), 1); EXPECT_EQ(results[0], "I am*#You*#*#*#HEis*#"); - + results.clear(); string = "aa,bb,cc,dd, ee"; results = CFG_split_string(string, ","); @@ -252,14 +267,16 @@ TEST(CFGCommon, test_exception) { CFG_ASSERT_MSG(0 > 10, "This is invalid comparision - %d > %d", 0, a); FAIL() << "CFG_ASSERT_MSG() should throw an error\n"; } catch (std::exception& e) { - EXPECT_EQ("This is invalid comparision - 0 > 10", CFG_print("%s", e.what())); + EXPECT_EQ("This is invalid comparision - 0 > 10", + CFG_print("%s", e.what())); exception_count++; } try { CFG_INTERNAL_ERROR("This is internal error %s", "from CFGCommon UnitTest"); FAIL() << "CFG_INTERNAL_ERROR() should throw an error\n"; } catch (std::exception& e) { - EXPECT_EQ("This is internal error from CFGCommon UnitTest", CFG_print("%s", e.what())); + EXPECT_EQ("This is internal error from CFGCommon UnitTest", + CFG_print("%s", e.what())); exception_count++; } EXPECT_EQ(exception_count, 3); @@ -270,7 +287,29 @@ TEST(CFGCommon, test_number_to_unit_string) { EXPECT_EQ(CFG_convert_number_to_unit_string(1023), "1023"); EXPECT_EQ(CFG_convert_number_to_unit_string(2048), "2K"); EXPECT_EQ(CFG_convert_number_to_unit_string(1024 * 1024), "1M"); - EXPECT_EQ(CFG_convert_number_to_unit_string(1024ULL * 1024ULL * 1024ULL), "1G"); - EXPECT_EQ(CFG_convert_number_to_unit_string(1024ULL * 1024ULL * 1024ULL * 1024ULL), "1T"); + EXPECT_EQ(CFG_convert_number_to_unit_string(1024ULL * 1024ULL * 1024ULL), + "1G"); + EXPECT_EQ( + CFG_convert_number_to_unit_string(1024ULL * 1024ULL * 1024ULL * 1024ULL), + "1T"); EXPECT_EQ(CFG_convert_number_to_unit_string(123456789), "123456789"); } + +TEST(CFGCommon, test_python) { + std::map str_maps; + std::map int_maps; + CFG_Python({"a=1", "b=3", "c=a+b", "d='%d'%(c*b)"}, {"d", "e"}, + {"a", "b", "c", "f"}, str_maps, int_maps); + EXPECT_EQ(str_maps.size(), 1); + EXPECT_NE(str_maps.find("d"), str_maps.end()); + EXPECT_EQ(str_maps["d"], "12"); + EXPECT_EQ(str_maps.find("e"), str_maps.end()); + EXPECT_EQ(int_maps.size(), 3); + EXPECT_NE(int_maps.find("a"), int_maps.end()); + EXPECT_EQ(int_maps["a"], 1); + EXPECT_NE(int_maps.find("b"), int_maps.end()); + EXPECT_EQ(int_maps["b"], 3); + EXPECT_NE(int_maps.find("c"), int_maps.end()); + EXPECT_EQ(int_maps["c"], 4); + EXPECT_EQ(int_maps.find("f"), int_maps.end()); +} diff --git a/tests/unittest/CMakeLists.txt b/tests/unittest/CMakeLists.txt index 3997a18de..322329e37 100644 --- a/tests/unittest/CMakeLists.txt +++ b/tests/unittest/CMakeLists.txt @@ -9,6 +9,13 @@ set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) add_definitions(-DGTEST_LANGUAGE_CXX17) +# Python +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/") +find_package(CustomPython3 REQUIRED) +message(STATUS "Python3_LIBRARIES (Unit) = ${Python3_LIBRARIES}") +message(STATUS "Python3_INCLUDE_DIRS (Unit) = ${Python3_INCLUDE_DIRS}") +message(STATUS "Python3_RUNTIME_LIBRARY_DIRS (Unit) = ${Python3_RUNTIME_LIBRARY_DIRS}") + find_package(Qt6 COMPONENTS Test REQUIRED) if (NOT Qt6Test_FOUND) message(STATUS "Failed to find Qt6Test required (on debian/ubuntu try 'sudo apt install qt6-base-dev')") @@ -111,6 +118,7 @@ include_directories( ${PROJECT_SOURCE_DIR}/CompilerTCLCommonCode ${CMAKE_CURRENT_BINARY_DIR}/../../include/ ${CMAKE_CURRENT_BINARY_DIR}/../../src/Configuration/CFGCommon + ${Python3_INCLUDE_DIRS} ) target_link_libraries(unittest PRIVATE @@ -125,7 +133,8 @@ target_link_libraries(unittest PRIVATE modelconfig programmer programmer-gui - Qt6::Test) + Qt6::Test + ${Python3_LIBRARIES}) add_test(NAME unittest COMMAND unittest) diff --git a/tests/unittest/CompilerTCLCommonCode/compiler_tcl_infra_common.cpp b/tests/unittest/CompilerTCLCommonCode/compiler_tcl_infra_common.cpp index 806487733..d4b6275cf 100644 --- a/tests/unittest/CompilerTCLCommonCode/compiler_tcl_infra_common.cpp +++ b/tests/unittest/CompilerTCLCommonCode/compiler_tcl_infra_common.cpp @@ -76,3 +76,33 @@ void compiler_tcl_common_run(const std::string& cmd, const int expected_status, ASSERT_EQ(msg, expected_msg); #endif } + +void create_unittest_directory(const std::string& feature) { + std::string directory = CFG_print("utst/%s", feature.c_str()); + if (!std::filesystem::is_directory("utst")) { + std::filesystem::create_directory("utst"); + } + if (!std::filesystem::is_directory(directory)) { + std::filesystem::create_directory(directory); + } +} + +void compare_unittest_file(bool binary, const std::string& file, + const std::string& feature, + const std::string& golden_dir, bool equal) { + std::string test_file = + CFG_print("utst/%s/%s", feature.c_str(), file.c_str()); + std::string golden_file = + CFG_print("%s/%s", golden_dir.c_str(), file.c_str()); + bool status = false; + if (binary) { + status = CFG_compare_two_binary_files(test_file, golden_file); + } else { + status = CFG_compare_two_text_files(test_file, golden_file); + } + if (status != equal) { + printf("Comparing unit test file failed: %s vs %s\n", test_file.c_str(), + golden_file.c_str()); + } + ASSERT_EQ(status, equal); +} diff --git a/tests/unittest/CompilerTCLCommonCode/compiler_tcl_infra_common.h b/tests/unittest/CompilerTCLCommonCode/compiler_tcl_infra_common.h index 8297fac8d..621689204 100644 --- a/tests/unittest/CompilerTCLCommonCode/compiler_tcl_infra_common.h +++ b/tests/unittest/CompilerTCLCommonCode/compiler_tcl_infra_common.h @@ -54,3 +54,7 @@ void compiler_tcl_common_setup(); void compiler_tcl_common_run(const std::string& cmd, const int expected_status = 0, const std::string& expected_msg = ""); +void create_unittest_directory(const std::string& feature); +void compare_unittest_file(bool binary, const std::string& file, + const std::string& feature, + const std::string& golden_dir, bool equal = true); \ No newline at end of file diff --git a/tests/unittest/ModelConfig/ModelConfig_IO_test.cpp b/tests/unittest/ModelConfig/ModelConfig_IO_test.cpp index 9a27bbf76..edf982fdf 100644 --- a/tests/unittest/ModelConfig/ModelConfig_IO_test.cpp +++ b/tests/unittest/ModelConfig/ModelConfig_IO_test.cpp @@ -24,7 +24,10 @@ along with this program. If not, see . class ModelConfig_IO : public ::testing::Test { protected: - void SetUp() override { compiler_tcl_common_setup(); } + void SetUp() override { + compiler_tcl_common_setup(); + create_unittest_directory("ModelConfig"); + } void TearDown() override {} }; @@ -38,7 +41,11 @@ TEST_F(ModelConfig_IO, set_property) { compiler_tcl_common_run( "set_property -dict {IOSTANDARD LVCMOS_18_HP PACKAGE_PIN HP_2_CC_10_5P} " "clk"); - compiler_tcl_common_run("write_property model_config.property.json"); + compiler_tcl_common_run( + "set_property -dict {ROUTE_TO_FABRIC_CLK 1 PACKAGE_PIN HR_5_CC_28_14P} " + "clock1"); + compiler_tcl_common_run( + "write_property utst/ModelConfig/model_config.property.json"); } TEST_F(ModelConfig_IO, gen_ppdb) { @@ -46,7 +53,8 @@ TEST_F(ModelConfig_IO, gen_ppdb) { std::string cmd = CFG_print( "model_config gen_ppdb -netlist_ppdb %s/model_config_netlist.ppdb.json " "-config_mapping %s/apis/config_attributes.mapping.json " - "model_config.ppdb.json", + "-property_json utst/ModelConfig/model_config.property.json " + "utst/ModelConfig/model_config.ppdb.json", current_dir.c_str(), current_dir.c_str()); compiler_tcl_common_run(cmd); } @@ -72,22 +80,17 @@ TEST_F(ModelConfig_IO, gen_bitstream) { } } compiler_tcl_common_run( - "model_config set_design -feature IO model_config.ppdb.json"); + "model_config set_design -feature IO " + "utst/ModelConfig/model_config.ppdb.json"); compiler_tcl_common_run( "model_config write -feature IO -format DETAIL " - "model_config_io_bitstream.detail.bit"); + "utst/ModelConfig/model_config_io_bitstream.detail.bit"); } TEST_F(ModelConfig_IO, compare_result) { std::string golden_dir = COMPILER_TCL_COMMON_GET_CURRENT_GOLDEN_DIR(); - ASSERT_EQ( - CFG_compare_two_text_files( - "model_config.ppdb.json", - CFG_print("%s/model_config.golden.ppdb.json", golden_dir.c_str())), - true); - ASSERT_EQ(CFG_compare_two_text_files( - "model_config_io_bitstream.detail.bit", - CFG_print("%s/model_config_io_bitstream.golden.detail.bit", - golden_dir.c_str())), - true); + compare_unittest_file(false, "model_config.ppdb.json", "ModelConfig", + golden_dir); + compare_unittest_file(false, "model_config_io_bitstream.detail.bit", + "ModelConfig", golden_dir); } diff --git a/tests/unittest/ModelConfig/ModelConfig_test.cpp b/tests/unittest/ModelConfig/ModelConfig_test.cpp index 7be1cb1cf..64bf2ea29 100644 --- a/tests/unittest/ModelConfig/ModelConfig_test.cpp +++ b/tests/unittest/ModelConfig/ModelConfig_test.cpp @@ -23,7 +23,10 @@ along with this program. If not, see . class ModelConfig : public ::testing::Test { protected: - void SetUp() override { compiler_tcl_common_setup(); } + void SetUp() override { + compiler_tcl_common_setup(); + create_unittest_directory("ModelConfig"); + } void TearDown() override {} }; @@ -108,50 +111,33 @@ TEST_F(ModelConfig, model_config) { current_dir.c_str()); compiler_tcl_common_run(tcl_cmd); compiler_tcl_common_run( - "model_config write -format BIT model_config_bit.txt"); + "model_config write -format BIT utst/ModelConfig/model_config_bit.txt"); compiler_tcl_common_run( - "model_config write -format WORD model_config_word.txt"); + "model_config write -format WORD utst/ModelConfig/model_config_word.txt"); compiler_tcl_common_run( - "model_config write -format DETAIL model_config_detail.txt"); + "model_config write -format DETAIL " + "utst/ModelConfig/model_config_detail.txt"); compiler_tcl_common_run( - "model_config write -format TCL model_config_tcl.txt"); + "model_config write -format TCL utst/ModelConfig/model_config_tcl.txt"); compiler_tcl_common_run( - "model_config write -format BIN model_config_bin.bin"); - compiler_tcl_common_run("model_config dump_ric TOP model_config_top_ric.txt"); + "model_config write -format BIN utst/ModelConfig/model_config_bin.bin"); + compiler_tcl_common_run( + "model_config dump_ric TOP utst/ModelConfig/model_config_top_ric.txt"); } TEST_F(ModelConfig, compare_result) { std::string golden_dir = COMPILER_TCL_COMMON_GET_CURRENT_GOLDEN_DIR(); - ASSERT_EQ( - CFG_compare_two_text_files( - "model_config_bit.txt", - CFG_print("%s/model_config_bit.golden.txt", golden_dir.c_str())), - true); - ASSERT_EQ( - CFG_compare_two_text_files( - "model_config_word.txt", - CFG_print("%s/model_config_word.golden.txt", golden_dir.c_str())), - true); - ASSERT_EQ( - CFG_compare_two_text_files( - "model_config_detail.txt", - CFG_print("%s/model_config_detail.golden.txt", golden_dir.c_str())), - true); - ASSERT_EQ( - CFG_compare_two_text_files( - "model_config_tcl.txt", - CFG_print("%s/model_config_tcl.golden.txt", golden_dir.c_str())), - true); - ASSERT_EQ( - CFG_compare_two_binary_files( - "model_config_bin.bin", - CFG_print("%s/model_config_bin.golden.bin", golden_dir.c_str())), - true); - ASSERT_EQ( - CFG_compare_two_text_files( - "model_config_top_ric.txt", - CFG_print("%s/model_config_top_ric.golden.txt", golden_dir.c_str()), - true), - true); + compare_unittest_file(false, "model_config_bit.txt", "ModelConfig", + golden_dir); + compare_unittest_file(false, "model_config_word.txt", "ModelConfig", + golden_dir); + compare_unittest_file(false, "model_config_detail.txt", "ModelConfig", + golden_dir); + compare_unittest_file(false, "model_config_tcl.txt", "ModelConfig", + golden_dir); + compare_unittest_file(true, "model_config_bin.bin", "ModelConfig", + golden_dir); + compare_unittest_file(false, "model_config_top_ric.txt", "ModelConfig", + golden_dir); // CFG_INTERNAL_ERROR("stop"); } diff --git a/tests/unittest/ModelConfig/apis/config_attributes.mapping.json b/tests/unittest/ModelConfig/apis/config_attributes.mapping.json index 80f0ca280..a7a62db36 100644 --- a/tests/unittest/ModelConfig/apis/config_attributes.mapping.json +++ b/tests/unittest/ModelConfig/apis/config_attributes.mapping.json @@ -46,7 +46,7 @@ "I_BUF" : "IOSTANDARD==__arg0__" }, "neg_results" : { - "I_BUF" : "IOSTANDARD==default" + "I_BUF" : "IOSTANDARD==DEFAULT" } }, "O_BUF.IOSTANDARD" : { @@ -57,15 +57,95 @@ "O_BUF" : "IOSTANDARD==__arg0__" }, "neg_results" : { - "O_BUF" : "IOSTANDARD==default", + "O_BUF" : "IOSTANDARD==DEFAULT", "__other__" : [ { "__name__" : "__parent__.__name__", "__mapped_name__" : "__parent__.u_HV_GBOX_BK1_A_0", - "O_BUF" : "IOSTANDARD==default" + "O_BUF" : "IOSTANDARD==DEFAULT" } ] } + }, + "CLK_BUF.FCLK_MUX" : { + "rules" : { + "__location__" : "__arg0__" + }, + "results" : { + "__other__" : [ + { + "__name__" : "__parent__.__name__", + "__mapped_name__" : "__parent__.u_gbox_fclk_mux___stype___all", + "__define__" : "parse_location", + "CLK_BUF" : "FCLK_MUX_SRC==__arg0__" + } + ] + } + }, + "CLK_BUF.PLL_REFMUX" : { + "rules" : { + "__location__" : "__arg0__" + }, + "results" : { + "__other__" : [ + { + "__name__" : "__parent__.__name__", + "__mapped_name__" : "u_GBOX_HP_40X2.u_gbox_pll_refmux___pll_refmux_index__", + "__define__" : "parse_location", + "CLK_BUF" : "PLL_REFMUX_SRC==__arg0__" + } + ] + } + }, + "CLK_BUF.ROOT_BANK_CLKMUX" : { + "rules" : { + "__location__" : "__arg0__" + }, + "results" : { + "__other__" : [ + { + "__name__" : "__parent__.__name__", + "__mapped_name__" : "__parent__.u_gbox_root_bank_clkmux___stype_____bank__", + "__define__" : "parse_location", + "CLK_BUF" : "ROOT_BANK_CLKMUX_SRC==__arg0__" + } + ] + } + }, + "CLK_BUF.ROOT_MUX" : { + "rules" : { + "__location__" : "__arg0__", + "ROUTE_TO_FABRIC_CLK" : "__arg1{default:0}__" + }, + "results" : { + "__other__" : [ + { + "__name__" : "__parent__.__name__", + "__mapped_name__" : "u_GBOX_HP_40X2.u_gbox_clkmux_52x1_left___arg1__", + "__define__" : "parse_location", + "CLK_BUF" : "ROOT_MUX_SRC==__arg0__" + } + ] + } + }, + "CLK_BUF.GBOX_TOP" : { + "rules" : { + "__location__" : "__arg0__" + }, + "results" : { + "CLK_BUF" : "GBOX_TOP_SRC==DEFAULT" + } + } + }, + "__define__" : { + "parse_location" : { + "__clkable__" : ["__clkable__='1' if ('__location__'.find('_CC_') != -1) else '0'"], + "__type__" : ["__type__='HP' if ('__location__'.find('HP_') == 0) else 'HV'"], + "__stype__" : ["__stype__='hp' if ('__location__'.find('HP_') == 0) else 'hv'"], + "__side__" : ["__side__='L' if ('__location__'.find('HR_1_') == 0 or '__location__'.find('HR_2_') == 0) else 'R'"], + "__pll_refmux_index__" : ["__pll_refmux_index__='0' if ('__location__'.find('HR_1_') == 0 or '__location__'.find('HR_2_') == 0) else '1'"], + "__bank__" : ["__bank__='0' if ('__location__'.find('HP_1_') == 0 or '__location__'.find('HR_1_') == 0 or '__location__'.find('HR_4_') == 0) else '1'"], + "__signal__" : ["__signal__='0' if ('__location__'.find('_10_5P') == (len('__location__') - 6)) else '1'"] } } } \ No newline at end of file diff --git a/tests/unittest/ModelConfig/golden/model_config.golden.ppdb.json b/tests/unittest/ModelConfig/golden/model_config.golden.ppdb.json deleted file mode 100644 index 1b15f0711..000000000 --- a/tests/unittest/ModelConfig/golden/model_config.golden.ppdb.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "instances": [ - { - "config_attributes": [ - { - "I_BUF": "WEAK_KEEPER==NONE" - }, - { - "__mapped_name__": "__parent__.u_gbox_pll_refmux_1", - "__name__": "__parent__.__name__", - "__optional__": "1", - "cfg_pllref_hv_rx_io_sel": "1" - }, - { - "__mapped_name__": "__parent__.u_gbox_pll_refmux_1", - "__name__": "__parent__.__name__", - "__optional__": "1", - "cfg_pllref_use_div": "1" - }, - { - "I_BUF": "IOSTANDARD==default" - } - ], - "connectivity": { - "I": "clock0", - "O": "$iopadmap$clock0" - }, - "linked_object": "clock0", - "location": "HP_2_CC_10_5P", - "module": "I_BUF", - "name": "$iopadmap$dut.clock0", - "parameters": { - "WEAK_KEEPER": "NONE" - }, - "properties": {} - }, - { - "connectivity": { - "I": "$iopadmap$clock0", - "O": "$auto$clkbufmap.cc:262:execute$414" - }, - "linked_object": "clock0", - "location": "HP_2_CC_10_5P", - "module": "WIRE", - "name": "AUTO CLK_BUF clock0 #0", - "parameters": {}, - "properties": {} - }, - { - "connectivity": { - "I": "$auto$clkbufmap.cc:262:execute$414", - "O": "$auto$clkbufmap.cc:294:execute$415" - }, - "linked_object": "clock0", - "location": "HP_2_CC_10_5P", - "module": "CLK_BUF", - "name": "$auto$clkbufmap.cc:261:execute$413", - "parameters": {}, - "properties": {} - }, - { - "config_attributes": [ - { - "I_BUF": "WEAK_KEEPER==NONE" - }, - { - "__mapped_name__": "__parent__.u_gbox_pll_refmux_1", - "__name__": "__parent__.__name__", - "__optional__": "1", - "cfg_pllref_hv_rx_io_sel": "1" - }, - { - "__mapped_name__": "__parent__.u_gbox_pll_refmux_1", - "__name__": "__parent__.__name__", - "__optional__": "1", - "cfg_pllref_use_div": "1" - }, - { - "I_BUF": "IOSTANDARD==default" - } - ], - "connectivity": { - "I": "d", - "O": "$iopadmap$d" - }, - "linked_object": "d", - "location": "HR_2_6_3P", - "module": "I_BUF", - "name": "$iopadmap$dut.d", - "parameters": { - "WEAK_KEEPER": "NONE" - }, - "properties": {} - }, - { - "config_attributes": [ - { - "O_BUF": "IOSTANDARD==default" - }, - { - "O_BUF": "IOSTANDARD==default", - "__mapped_name__": "__parent__.u_HV_GBOX_BK1_A_0", - "__name__": "__parent__.__name__" - } - ], - "connectivity": { - "I": "$iopadmap$q", - "O": "q" - }, - "linked_object": "q", - "location": "HR_5_12_6P", - "module": "O_BUF", - "name": "$iopadmap$dut.q", - "parameters": {}, - "properties": {} - } - ] -} \ No newline at end of file diff --git a/tests/unittest/ModelConfig/golden/model_config.ppdb.json b/tests/unittest/ModelConfig/golden/model_config.ppdb.json new file mode 100644 index 000000000..dcf6cc079 --- /dev/null +++ b/tests/unittest/ModelConfig/golden/model_config.ppdb.json @@ -0,0 +1,235 @@ +{ + "instances": [ + { + "config_attributes": [ + { + "I_BUF": "WEAK_KEEPER==NONE" + }, + { + "__mapped_name__": "__parent__.u_gbox_pll_refmux_1", + "__name__": "__parent__.__name__", + "__optional__": "1", + "cfg_pllref_hv_rx_io_sel": "1" + }, + { + "__mapped_name__": "__parent__.u_gbox_pll_refmux_1", + "__name__": "__parent__.__name__", + "__optional__": "1", + "cfg_pllref_use_div": "1" + }, + { + "I_BUF": "IOSTANDARD==DEFAULT" + } + ], + "connectivity": { + "I": "clock0", + "O": "$iopadmap$clock0" + }, + "linked_object": "clock0", + "location": "HP_2_CC_10_5P", + "module": "I_BUF", + "name": "$iopadmap$dut.clock0", + "parameters": { + "WEAK_KEEPER": "NONE" + }, + "properties": {} + }, + { + "connectivity": { + "I": "$iopadmap$clock0", + "O": "$auto$clkbufmap.cc:262:execute$414" + }, + "linked_object": "clock0", + "location": "HP_2_CC_10_5P", + "module": "WIRE", + "name": "AUTO CLK_BUF clock0 #0", + "parameters": {}, + "properties": {} + }, + { + "config_attributes": [ + { + "CLK_BUF": "FCLK_MUX_SRC==HP_2_CC_10_5P", + "__mapped_name__": "__parent__.u_gbox_fclk_mux_hp_all", + "__name__": "__parent__.__name__" + }, + { + "CLK_BUF": "GBOX_TOP_SRC==DEFAULT" + }, + { + "CLK_BUF": "PLL_REFMUX_SRC==HP_2_CC_10_5P", + "__mapped_name__": "u_GBOX_HP_40X2.u_gbox_pll_refmux_1", + "__name__": "__parent__.__name__" + }, + { + "CLK_BUF": "ROOT_BANK_CLKMUX_SRC==HP_2_CC_10_5P", + "__mapped_name__": "__parent__.u_gbox_root_bank_clkmux_hp_1", + "__name__": "__parent__.__name__" + }, + { + "CLK_BUF": "ROOT_MUX_SRC==HP_2_CC_10_5P", + "__mapped_name__": "u_GBOX_HP_40X2.u_gbox_clkmux_52x1_left_0", + "__name__": "__parent__.__name__" + } + ], + "connectivity": { + "I": "$auto$clkbufmap.cc:262:execute$414", + "O": "$auto$clkbufmap.cc:294:execute$415" + }, + "linked_object": "clock0", + "location": "HP_2_CC_10_5P", + "module": "CLK_BUF", + "name": "$auto$clkbufmap.cc:261:execute$413", + "parameters": {}, + "properties": {} + }, + { + "config_attributes": [ + { + "I_BUF": "WEAK_KEEPER==NONE" + }, + { + "__mapped_name__": "__parent__.u_gbox_pll_refmux_1", + "__name__": "__parent__.__name__", + "__optional__": "1", + "cfg_pllref_hv_rx_io_sel": "1" + }, + { + "__mapped_name__": "__parent__.u_gbox_pll_refmux_1", + "__name__": "__parent__.__name__", + "__optional__": "1", + "cfg_pllref_use_div": "1" + }, + { + "I_BUF": "IOSTANDARD==DEFAULT" + } + ], + "connectivity": { + "I": "clock1", + "O": "$iopadmap$clock1" + }, + "linked_object": "clock1", + "location": "HR_5_CC_28_14P", + "module": "I_BUF", + "name": "$iopadmap$dut.clock1", + "parameters": { + "WEAK_KEEPER": "NONE" + }, + "properties": { + "PACKAGE_PIN": "HR_5_CC_28_14P", + "ROUTE_TO_FABRIC_CLK": "1" + } + }, + { + "connectivity": { + "I": "$iopadmap$clock1", + "O": "$auto$clkbufmap.cc:262:execute$414" + }, + "linked_object": "clock1", + "location": "HR_5_CC_28_14P", + "module": "WIRE", + "name": "AUTO CLK_BUF clock1 #0", + "parameters": {}, + "properties": { + "PACKAGE_PIN": "HR_5_CC_28_14P", + "ROUTE_TO_FABRIC_CLK": "1" + } + }, + { + "config_attributes": [ + { + "CLK_BUF": "FCLK_MUX_SRC==HR_5_CC_28_14P", + "__mapped_name__": "__parent__.u_gbox_fclk_mux_hv_all", + "__name__": "__parent__.__name__" + }, + { + "CLK_BUF": "GBOX_TOP_SRC==DEFAULT" + }, + { + "CLK_BUF": "PLL_REFMUX_SRC==HR_5_CC_28_14P", + "__mapped_name__": "u_GBOX_HP_40X2.u_gbox_pll_refmux_1", + "__name__": "__parent__.__name__" + }, + { + "CLK_BUF": "ROOT_BANK_CLKMUX_SRC==HR_5_CC_28_14P", + "__mapped_name__": "__parent__.u_gbox_root_bank_clkmux_hv_1", + "__name__": "__parent__.__name__" + }, + { + "CLK_BUF": "ROOT_MUX_SRC==HR_5_CC_28_14P", + "__mapped_name__": "u_GBOX_HP_40X2.u_gbox_clkmux_52x1_left_1", + "__name__": "__parent__.__name__" + } + ], + "connectivity": { + "I": "$auto$clkbufmap.cc:262:execute$414", + "O": "$auto$clkbufmap.cc:294:execute$415" + }, + "linked_object": "clock1", + "location": "HR_5_CC_28_14P", + "module": "CLK_BUF", + "name": "$auto$clkbufmap.cc:261:execute$413", + "parameters": {}, + "properties": { + "PACKAGE_PIN": "HR_5_CC_28_14P", + "ROUTE_TO_FABRIC_CLK": "1" + } + }, + { + "config_attributes": [ + { + "I_BUF": "WEAK_KEEPER==NONE" + }, + { + "__mapped_name__": "__parent__.u_gbox_pll_refmux_1", + "__name__": "__parent__.__name__", + "__optional__": "1", + "cfg_pllref_hv_rx_io_sel": "1" + }, + { + "__mapped_name__": "__parent__.u_gbox_pll_refmux_1", + "__name__": "__parent__.__name__", + "__optional__": "1", + "cfg_pllref_use_div": "1" + }, + { + "I_BUF": "IOSTANDARD==DEFAULT" + } + ], + "connectivity": { + "I": "d", + "O": "$iopadmap$d" + }, + "linked_object": "d", + "location": "HR_2_6_3P", + "module": "I_BUF", + "name": "$iopadmap$dut.d", + "parameters": { + "WEAK_KEEPER": "NONE" + }, + "properties": {} + }, + { + "config_attributes": [ + { + "O_BUF": "IOSTANDARD==DEFAULT" + }, + { + "O_BUF": "IOSTANDARD==DEFAULT", + "__mapped_name__": "__parent__.u_HV_GBOX_BK1_A_0", + "__name__": "__parent__.__name__" + } + ], + "connectivity": { + "I": "$iopadmap$q", + "O": "q" + }, + "linked_object": "q", + "location": "HR_5_12_6P", + "module": "O_BUF", + "name": "$iopadmap$dut.q", + "parameters": {}, + "properties": {} + } + ] +} \ No newline at end of file diff --git a/tests/unittest/ModelConfig/golden/model_config_bin.golden.bin b/tests/unittest/ModelConfig/golden/model_config_bin.bin similarity index 100% rename from tests/unittest/ModelConfig/golden/model_config_bin.golden.bin rename to tests/unittest/ModelConfig/golden/model_config_bin.bin diff --git a/tests/unittest/ModelConfig/golden/model_config_bit.golden.txt b/tests/unittest/ModelConfig/golden/model_config_bit.txt similarity index 100% rename from tests/unittest/ModelConfig/golden/model_config_bit.golden.txt rename to tests/unittest/ModelConfig/golden/model_config_bit.txt diff --git a/tests/unittest/ModelConfig/golden/model_config_detail.golden.txt b/tests/unittest/ModelConfig/golden/model_config_detail.txt similarity index 100% rename from tests/unittest/ModelConfig/golden/model_config_detail.golden.txt rename to tests/unittest/ModelConfig/golden/model_config_detail.txt diff --git a/tests/unittest/ModelConfig/golden/model_config_io_bitstream.golden.detail.bit b/tests/unittest/ModelConfig/golden/model_config_io_bitstream.detail.bit similarity index 98% rename from tests/unittest/ModelConfig/golden/model_config_io_bitstream.golden.detail.bit rename to tests/unittest/ModelConfig/golden/model_config_io_bitstream.detail.bit index 045c6ce8b..1f25f7bae 100644 --- a/tests/unittest/ModelConfig/golden/model_config_io_bitstream.golden.detail.bit +++ b/tests/unittest/ModelConfig/golden/model_config_io_bitstream.detail.bit @@ -1229,28 +1229,28 @@ Block u_GBOX_HV_40X2_VR.u_HV_GBOX_BK1_B_14 [HR_5_CC_29_14N] MC - Addr: 0x0000085A, Size: 4, Value: (0x00000000) 0 Block u_GBOX_HV_40X2_VR.u_HV_GBOX_BK1_A_14 [HR_5_CC_28_14P] Attributes: - RATE - Addr: 0x0000085E, Size: 4, Value: (0x00000000) 0 - MASTER_SLAVE - Addr: 0x00000862, Size: 1, Value: (0x00000000) 0 - PEER_IS_ON - Addr: 0x00000863, Size: 1, Value: (0x00000000) 0 - TX_CLOCK_IO - Addr: 0x00000864, Size: 1, Value: (0x00000000) 0 - TX_DDR_MODE - Addr: 0x00000865, Size: 2, Value: (0x00000000) 0 - TX_BYPASS - Addr: 0x00000867, Size: 1, Value: (0x00000000) 0 - TX_CLK_PHASE - Addr: 0x00000868, Size: 2, Value: (0x00000000) 0 - TX_DLY - Addr: 0x0000086A, Size: 6, Value: (0x00000000) 0 - RX_DDR_MODE - Addr: 0x00000870, Size: 2, Value: (0x00000000) 0 - RX_BYPASS - Addr: 0x00000872, Size: 1, Value: (0x00000000) 0 + RATE - Addr: 0x0000085E, Size: 4, Value: (0x00000003) 3 { $iopadmap$dut.clock1 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + MASTER_SLAVE - Addr: 0x00000862, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.clock1 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + PEER_IS_ON - Addr: 0x00000863, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.clock1 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + TX_CLOCK_IO - Addr: 0x00000864, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.clock1 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + TX_DDR_MODE - Addr: 0x00000865, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.clock1 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + TX_BYPASS - Addr: 0x00000867, Size: 1, Value: (0x00000001) 1 { $iopadmap$dut.clock1 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT], $auto$clkbufmap.cc:261:execute$413 [CLK_BUF] [CLK_BUF:GBOX_TOP_SRC==DEFAULT] } + TX_CLK_PHASE - Addr: 0x00000868, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.clock1 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + TX_DLY - Addr: 0x0000086A, Size: 6, Value: (0x00000000) 0 { $iopadmap$dut.clock1 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + RX_DDR_MODE - Addr: 0x00000870, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.clock1 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + RX_BYPASS - Addr: 0x00000872, Size: 1, Value: (0x00000001) 1 { $iopadmap$dut.clock1 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } RX_DLY - Addr: 0x00000873, Size: 6, Value: (0x00000000) 0 - RX_DPA_MODE - Addr: 0x00000879, Size: 2, Value: (0x00000000) 0 - RX_MIPI_MODE - Addr: 0x0000087B, Size: 1, Value: (0x00000000) 0 - TX_MODE - Addr: 0x0000087C, Size: 1, Value: (0x00000000) 0 - RX_MODE - Addr: 0x0000087D, Size: 1, Value: (0x00000000) 0 - RX_CLOCK_IO - Addr: 0x0000087E, Size: 1, Value: (0x00000000) 0 - DFEN - Addr: 0x0000087F, Size: 1, Value: (0x00000000) 0 - SR - Addr: 0x00000880, Size: 1, Value: (0x00000000) 0 - PE - Addr: 0x00000881, Size: 1, Value: (0x00000000) 0 - PUD - Addr: 0x00000882, Size: 1, Value: (0x00000000) 0 - DFODTEN - Addr: 0x00000883, Size: 1, Value: (0x00000000) 0 - MC - Addr: 0x00000884, Size: 4, Value: (0x00000000) 0 + RX_DPA_MODE - Addr: 0x00000879, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.clock1 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + RX_MIPI_MODE - Addr: 0x0000087B, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.clock1 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + TX_MODE - Addr: 0x0000087C, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.clock1 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + RX_MODE - Addr: 0x0000087D, Size: 1, Value: (0x00000001) 1 { $iopadmap$dut.clock1 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + RX_CLOCK_IO - Addr: 0x0000087E, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.clock1 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + DFEN - Addr: 0x0000087F, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.clock1 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + SR - Addr: 0x00000880, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.clock1 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + PE - Addr: 0x00000881, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.clock1 [I_BUF] [I_BUF:WEAK_KEEPER==NONE] } + PUD - Addr: 0x00000882, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.clock1 [I_BUF] [I_BUF:WEAK_KEEPER==NONE] } + DFODTEN - Addr: 0x00000883, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.clock1 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + MC - Addr: 0x00000884, Size: 4, Value: (0x00000001) 1 { $iopadmap$dut.clock1 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } Block u_GBOX_HV_40X2_VR.u_HV_GBOX_BK1_B_13 [HR_5_27_13N] Attributes: RATE - Addr: 0x00000888, Size: 4, Value: (0x00000000) 0 @@ -1613,28 +1613,28 @@ Block u_GBOX_HV_40X2_VR.u_HV_GBOX_BK1_B_6 [HR_5_13_6N] MC - Addr: 0x00000AFA, Size: 4, Value: (0x00000000) 0 Block u_GBOX_HV_40X2_VR.u_HV_GBOX_BK1_A_6 [HR_5_12_6P] Attributes: - RATE - Addr: 0x00000AFE, Size: 4, Value: (0x00000003) 3 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] } - MASTER_SLAVE - Addr: 0x00000B02, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] } - PEER_IS_ON - Addr: 0x00000B03, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] } - TX_CLOCK_IO - Addr: 0x00000B04, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] } - TX_DDR_MODE - Addr: 0x00000B05, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] } - TX_BYPASS - Addr: 0x00000B07, Size: 1, Value: (0x00000001) 1 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] } - TX_CLK_PHASE - Addr: 0x00000B08, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] } + RATE - Addr: 0x00000AFE, Size: 4, Value: (0x00000003) 3 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] } + MASTER_SLAVE - Addr: 0x00000B02, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] } + PEER_IS_ON - Addr: 0x00000B03, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] } + TX_CLOCK_IO - Addr: 0x00000B04, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] } + TX_DDR_MODE - Addr: 0x00000B05, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] } + TX_BYPASS - Addr: 0x00000B07, Size: 1, Value: (0x00000001) 1 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] } + TX_CLK_PHASE - Addr: 0x00000B08, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] } TX_DLY - Addr: 0x00000B0A, Size: 6, Value: (0x00000000) 0 - RX_DDR_MODE - Addr: 0x00000B10, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] } - RX_BYPASS - Addr: 0x00000B12, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] } - RX_DLY - Addr: 0x00000B13, Size: 6, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] } - RX_DPA_MODE - Addr: 0x00000B19, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] } - RX_MIPI_MODE - Addr: 0x00000B1B, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] } - TX_MODE - Addr: 0x00000B1C, Size: 1, Value: (0x00000001) 1 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] } - RX_MODE - Addr: 0x00000B1D, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] } - RX_CLOCK_IO - Addr: 0x00000B1E, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] } - DFEN - Addr: 0x00000B1F, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] } - SR - Addr: 0x00000B20, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] } - PE - Addr: 0x00000B21, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] } - PUD - Addr: 0x00000B22, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] } - DFODTEN - Addr: 0x00000B23, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] } - MC - Addr: 0x00000B24, Size: 4, Value: (0x00000001) 1 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] } + RX_DDR_MODE - Addr: 0x00000B10, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] } + RX_BYPASS - Addr: 0x00000B12, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] } + RX_DLY - Addr: 0x00000B13, Size: 6, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] } + RX_DPA_MODE - Addr: 0x00000B19, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] } + RX_MIPI_MODE - Addr: 0x00000B1B, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] } + TX_MODE - Addr: 0x00000B1C, Size: 1, Value: (0x00000001) 1 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] } + RX_MODE - Addr: 0x00000B1D, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] } + RX_CLOCK_IO - Addr: 0x00000B1E, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] } + DFEN - Addr: 0x00000B1F, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] } + SR - Addr: 0x00000B20, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] } + PE - Addr: 0x00000B21, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] } + PUD - Addr: 0x00000B22, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] } + DFODTEN - Addr: 0x00000B23, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] } + MC - Addr: 0x00000B24, Size: 4, Value: (0x00000001) 1 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] } Block u_GBOX_HV_40X2_VR.u_HV_GBOX_BK1_B_5 [HR_5_CC_11_5N] Attributes: RATE - Addr: 0x00000B28, Size: 4, Value: (0x00000000) 0 @@ -1901,28 +1901,28 @@ Block u_GBOX_HV_40X2_VR.u_HV_GBOX_BK1_B_0 [HR_5_1_0N] MC - Addr: 0x00000CF2, Size: 4, Value: (0x00000000) 0 Block u_GBOX_HV_40X2_VR.u_HV_GBOX_BK1_A_0 [HR_5_0_0P] Attributes: - RATE - Addr: 0x00000CF6, Size: 4, Value: (0x00000003) 3 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] [from HR_5_12_6P] } - MASTER_SLAVE - Addr: 0x00000CFA, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] [from HR_5_12_6P] } - PEER_IS_ON - Addr: 0x00000CFB, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] [from HR_5_12_6P] } - TX_CLOCK_IO - Addr: 0x00000CFC, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] [from HR_5_12_6P] } - TX_DDR_MODE - Addr: 0x00000CFD, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] [from HR_5_12_6P] } - TX_BYPASS - Addr: 0x00000CFF, Size: 1, Value: (0x00000001) 1 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] [from HR_5_12_6P] } - TX_CLK_PHASE - Addr: 0x00000D00, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] [from HR_5_12_6P] } + RATE - Addr: 0x00000CF6, Size: 4, Value: (0x00000003) 3 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] [from HR_5_12_6P] } + MASTER_SLAVE - Addr: 0x00000CFA, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] [from HR_5_12_6P] } + PEER_IS_ON - Addr: 0x00000CFB, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] [from HR_5_12_6P] } + TX_CLOCK_IO - Addr: 0x00000CFC, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] [from HR_5_12_6P] } + TX_DDR_MODE - Addr: 0x00000CFD, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] [from HR_5_12_6P] } + TX_BYPASS - Addr: 0x00000CFF, Size: 1, Value: (0x00000001) 1 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] [from HR_5_12_6P] } + TX_CLK_PHASE - Addr: 0x00000D00, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] [from HR_5_12_6P] } TX_DLY - Addr: 0x00000D02, Size: 6, Value: (0x00000000) 0 - RX_DDR_MODE - Addr: 0x00000D08, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] [from HR_5_12_6P] } - RX_BYPASS - Addr: 0x00000D0A, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] [from HR_5_12_6P] } - RX_DLY - Addr: 0x00000D0B, Size: 6, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] [from HR_5_12_6P] } - RX_DPA_MODE - Addr: 0x00000D11, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] [from HR_5_12_6P] } - RX_MIPI_MODE - Addr: 0x00000D13, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] [from HR_5_12_6P] } - TX_MODE - Addr: 0x00000D14, Size: 1, Value: (0x00000001) 1 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] [from HR_5_12_6P] } - RX_MODE - Addr: 0x00000D15, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] [from HR_5_12_6P] } - RX_CLOCK_IO - Addr: 0x00000D16, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] [from HR_5_12_6P] } - DFEN - Addr: 0x00000D17, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] [from HR_5_12_6P] } - SR - Addr: 0x00000D18, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] [from HR_5_12_6P] } - PE - Addr: 0x00000D19, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] [from HR_5_12_6P] } - PUD - Addr: 0x00000D1A, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] [from HR_5_12_6P] } - DFODTEN - Addr: 0x00000D1B, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] [from HR_5_12_6P] } - MC - Addr: 0x00000D1C, Size: 4, Value: (0x00000001) 1 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==default] [from HR_5_12_6P] } + RX_DDR_MODE - Addr: 0x00000D08, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] [from HR_5_12_6P] } + RX_BYPASS - Addr: 0x00000D0A, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] [from HR_5_12_6P] } + RX_DLY - Addr: 0x00000D0B, Size: 6, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] [from HR_5_12_6P] } + RX_DPA_MODE - Addr: 0x00000D11, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] [from HR_5_12_6P] } + RX_MIPI_MODE - Addr: 0x00000D13, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] [from HR_5_12_6P] } + TX_MODE - Addr: 0x00000D14, Size: 1, Value: (0x00000001) 1 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] [from HR_5_12_6P] } + RX_MODE - Addr: 0x00000D15, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] [from HR_5_12_6P] } + RX_CLOCK_IO - Addr: 0x00000D16, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] [from HR_5_12_6P] } + DFEN - Addr: 0x00000D17, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] [from HR_5_12_6P] } + SR - Addr: 0x00000D18, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] [from HR_5_12_6P] } + PE - Addr: 0x00000D19, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] [from HR_5_12_6P] } + PUD - Addr: 0x00000D1A, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] [from HR_5_12_6P] } + DFODTEN - Addr: 0x00000D1B, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] [from HR_5_12_6P] } + MC - Addr: 0x00000D1C, Size: 4, Value: (0x00000001) 1 { $iopadmap$dut.q [O_BUF] [O_BUF:IOSTANDARD==DEFAULT] [from HR_5_12_6P] } Block u_GBOX_HV_40X2_VR.u_HV_PGEN_dummy [] Attributes: hv_cfg_EN_BK0 - Addr: 0x00000D20, Size: 1, Value: (0x00000000) 0 @@ -1930,15 +1930,15 @@ Block u_GBOX_HV_40X2_VR.u_HV_PGEN_dummy [] Block u_GBOX_HV_40X2_VR.u_gbox_fclk_mux_hv_all [] Attributes: cfg_hp_rxclk_phase_sel_B_0 - Addr: 0x00000D22, Size: 1, Value: (0x00000000) 0 - cfg_hp_rxclk_phase_sel_B_1 - Addr: 0x00000D23, Size: 1, Value: (0x00000000) 0 + cfg_hp_rxclk_phase_sel_B_1 - Addr: 0x00000D23, Size: 1, Value: (0x00000001) 1 { $auto$clkbufmap.cc:261:execute$413 [CLK_BUF] [CLK_BUF:FCLK_MUX_SRC==HR_5_CC_28_14P] [from HR_5_CC_28_14P] } cfg_hp_rxclk_phase_sel_A_0 - Addr: 0x00000D24, Size: 1, Value: (0x00000000) 0 cfg_hp_rxclk_phase_sel_A_1 - Addr: 0x00000D25, Size: 1, Value: (0x00000000) 0 cfg_hp_rx_fclkio_sel_B_0 - Addr: 0x00000D26, Size: 1, Value: (0x00000000) 0 - cfg_hp_rx_fclkio_sel_B_1 - Addr: 0x00000D27, Size: 1, Value: (0x00000000) 0 + cfg_hp_rx_fclkio_sel_B_1 - Addr: 0x00000D27, Size: 1, Value: (0x00000001) 1 { $auto$clkbufmap.cc:261:execute$413 [CLK_BUF] [CLK_BUF:FCLK_MUX_SRC==HR_5_CC_28_14P] [from HR_5_CC_28_14P] } cfg_hp_rx_fclkio_sel_A_0 - Addr: 0x00000D28, Size: 1, Value: (0x00000000) 0 cfg_hp_rx_fclkio_sel_A_1 - Addr: 0x00000D29, Size: 1, Value: (0x00000000) 0 cfg_hp_vco_clk_sel_B_0 - Addr: 0x00000D2A, Size: 1, Value: (0x00000000) 0 - cfg_hp_vco_clk_sel_B_1 - Addr: 0x00000D2B, Size: 1, Value: (0x00000000) 0 + cfg_hp_vco_clk_sel_B_1 - Addr: 0x00000D2B, Size: 1, Value: (0x00000000) 0 { $auto$clkbufmap.cc:261:execute$413 [CLK_BUF] [CLK_BUF:FCLK_MUX_SRC==HR_5_CC_28_14P] [from HR_5_CC_28_14P] } cfg_hp_vco_clk_sel_A_0 - Addr: 0x00000D2C, Size: 1, Value: (0x00000000) 0 cfg_hp_vco_clk_sel_A_1 - Addr: 0x00000D2D, Size: 1, Value: (0x00000000) 0 Block u_GBOX_HV_40X2_VR.u_gbox_root_bank_clkmux_hv_0 [] @@ -1952,7 +1952,7 @@ Block u_GBOX_HV_40X2_VR.u_gbox_root_bank_clkmux_hv_1 [] CDR_CLK_ROOT_SEL_B - Addr: 0x00000D42, Size: 5, Value: (0x00000000) 0 CDR_CLK_ROOT_SEL_A - Addr: 0x00000D47, Size: 5, Value: (0x00000000) 0 CORE_CLK_ROOT_SEL_B - Addr: 0x00000D4C, Size: 5, Value: (0x00000000) 0 - CORE_CLK_ROOT_SEL_A - Addr: 0x00000D51, Size: 5, Value: (0x00000000) 0 + CORE_CLK_ROOT_SEL_A - Addr: 0x00000D51, Size: 5, Value: (0x00000012) 18 { $auto$clkbufmap.cc:261:execute$413 [CLK_BUF] [CLK_BUF:ROOT_BANK_CLKMUX_SRC==HR_5_CC_28_14P] [from HR_5_CC_28_14P] } Block u_GBOX_HP_40X2.u_HP_GBOX_BK1_B_19 [HP_2_39_19N] Attributes: RATE - Addr: 0x00000D56, Size: 4, Value: (0x00000000) 0 @@ -2651,28 +2651,28 @@ Block u_GBOX_HP_40X2.u_HP_GBOX_BK1_B_5 [HP_2_CC_11_5N] MC - Addr: 0x00001214, Size: 4, Value: (0x00000000) 0 Block u_GBOX_HP_40X2.u_HP_GBOX_BK1_A_5 [HP_2_CC_10_5P] Attributes: - RATE - Addr: 0x00001218, Size: 4, Value: (0x00000003) 3 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==default] } - MASTER_SLAVE - Addr: 0x0000121C, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==default] } - PEER_IS_ON - Addr: 0x0000121D, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==default] } - TX_CLOCK_IO - Addr: 0x0000121E, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==default] } - TX_DDR_MODE - Addr: 0x0000121F, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==default] } - TX_BYPASS - Addr: 0x00001221, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==default] } - TX_CLK_PHASE - Addr: 0x00001222, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==default] } - TX_DLY - Addr: 0x00001224, Size: 6, Value: (0x00000000) 0 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==default] } - RX_DDR_MODE - Addr: 0x0000122A, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==default] } - RX_BYPASS - Addr: 0x0000122C, Size: 1, Value: (0x00000001) 1 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==default] } + RATE - Addr: 0x00001218, Size: 4, Value: (0x00000003) 3 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + MASTER_SLAVE - Addr: 0x0000121C, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + PEER_IS_ON - Addr: 0x0000121D, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + TX_CLOCK_IO - Addr: 0x0000121E, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + TX_DDR_MODE - Addr: 0x0000121F, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + TX_BYPASS - Addr: 0x00001221, Size: 1, Value: (0x00000001) 1 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT], $auto$clkbufmap.cc:261:execute$413 [CLK_BUF] [CLK_BUF:GBOX_TOP_SRC==DEFAULT] } + TX_CLK_PHASE - Addr: 0x00001222, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + TX_DLY - Addr: 0x00001224, Size: 6, Value: (0x00000000) 0 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + RX_DDR_MODE - Addr: 0x0000122A, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + RX_BYPASS - Addr: 0x0000122C, Size: 1, Value: (0x00000001) 1 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } RX_DLY - Addr: 0x0000122D, Size: 6, Value: (0x00000000) 0 - RX_DPA_MODE - Addr: 0x00001233, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==default] } - RX_MIPI_MODE - Addr: 0x00001235, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==default] } - TX_MODE - Addr: 0x00001236, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==default] } - RX_MODE - Addr: 0x00001237, Size: 1, Value: (0x00000001) 1 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==default] } - RX_CLOCK_IO - Addr: 0x00001238, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==default] } - DFEN - Addr: 0x00001239, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==default] } - SR - Addr: 0x0000123A, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==default] } + RX_DPA_MODE - Addr: 0x00001233, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + RX_MIPI_MODE - Addr: 0x00001235, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + TX_MODE - Addr: 0x00001236, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + RX_MODE - Addr: 0x00001237, Size: 1, Value: (0x00000001) 1 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + RX_CLOCK_IO - Addr: 0x00001238, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + DFEN - Addr: 0x00001239, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + SR - Addr: 0x0000123A, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } PE - Addr: 0x0000123B, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:WEAK_KEEPER==NONE] } PUD - Addr: 0x0000123C, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:WEAK_KEEPER==NONE] } - DFODTEN - Addr: 0x0000123D, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==default] } - MC - Addr: 0x0000123E, Size: 4, Value: (0x00000001) 1 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==default] } + DFODTEN - Addr: 0x0000123D, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + MC - Addr: 0x0000123E, Size: 4, Value: (0x00000001) 1 { $iopadmap$dut.clock0 [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } Block u_GBOX_HP_40X2.u_HP_GBOX_BK1_B_4 [HP_2_9_4N] Attributes: RATE - Addr: 0x00001242, Size: 4, Value: (0x00000000) 0 @@ -3886,15 +3886,15 @@ Block u_GBOX_HP_40X2.u_gbox_fclk_mux_hp_all [] cfg_hp_rxclk_phase_sel_B_0 - Addr: 0x00001A7C, Size: 1, Value: (0x00000000) 0 cfg_hp_rxclk_phase_sel_B_1 - Addr: 0x00001A7D, Size: 1, Value: (0x00000000) 0 cfg_hp_rxclk_phase_sel_A_0 - Addr: 0x00001A7E, Size: 1, Value: (0x00000000) 0 - cfg_hp_rxclk_phase_sel_A_1 - Addr: 0x00001A7F, Size: 1, Value: (0x00000000) 0 + cfg_hp_rxclk_phase_sel_A_1 - Addr: 0x00001A7F, Size: 1, Value: (0x00000001) 1 { $auto$clkbufmap.cc:261:execute$413 [CLK_BUF] [CLK_BUF:FCLK_MUX_SRC==HP_2_CC_10_5P] [from HP_2_CC_10_5P] } cfg_hp_rx_fclkio_sel_B_0 - Addr: 0x00001A80, Size: 1, Value: (0x00000000) 0 cfg_hp_rx_fclkio_sel_B_1 - Addr: 0x00001A81, Size: 1, Value: (0x00000000) 0 cfg_hp_rx_fclkio_sel_A_0 - Addr: 0x00001A82, Size: 1, Value: (0x00000000) 0 - cfg_hp_rx_fclkio_sel_A_1 - Addr: 0x00001A83, Size: 1, Value: (0x00000000) 0 + cfg_hp_rx_fclkio_sel_A_1 - Addr: 0x00001A83, Size: 1, Value: (0x00000000) 0 { $auto$clkbufmap.cc:261:execute$413 [CLK_BUF] [CLK_BUF:FCLK_MUX_SRC==HP_2_CC_10_5P] [from HP_2_CC_10_5P] } cfg_hp_vco_clk_sel_B_0 - Addr: 0x00001A84, Size: 1, Value: (0x00000000) 0 cfg_hp_vco_clk_sel_B_1 - Addr: 0x00001A85, Size: 1, Value: (0x00000000) 0 cfg_hp_vco_clk_sel_A_0 - Addr: 0x00001A86, Size: 1, Value: (0x00000000) 0 - cfg_hp_vco_clk_sel_A_1 - Addr: 0x00001A87, Size: 1, Value: (0x00000000) 0 + cfg_hp_vco_clk_sel_A_1 - Addr: 0x00001A87, Size: 1, Value: (0x00000000) 0 { $auto$clkbufmap.cc:261:execute$413 [CLK_BUF] [CLK_BUF:FCLK_MUX_SRC==HP_2_CC_10_5P] [from HP_2_CC_10_5P] } Block u_GBOX_HP_40X2.u_gbox_root_bank_clkmux_hp_0 [] Attributes: CDR_CLK_ROOT_SEL_B - Addr: 0x00001A88, Size: 5, Value: (0x00000000) 0 @@ -3905,14 +3905,14 @@ Block u_GBOX_HP_40X2.u_gbox_root_bank_clkmux_hp_1 [] Attributes: CDR_CLK_ROOT_SEL_B - Addr: 0x00001A9C, Size: 5, Value: (0x00000000) 0 CDR_CLK_ROOT_SEL_A - Addr: 0x00001AA1, Size: 5, Value: (0x00000000) 0 - CORE_CLK_ROOT_SEL_B - Addr: 0x00001AA6, Size: 5, Value: (0x00000000) 0 + CORE_CLK_ROOT_SEL_B - Addr: 0x00001AA6, Size: 5, Value: (0x00000012) 18 { $auto$clkbufmap.cc:261:execute$413 [CLK_BUF] [CLK_BUF:ROOT_BANK_CLKMUX_SRC==HP_2_CC_10_5P] [from HP_2_CC_10_5P] } CORE_CLK_ROOT_SEL_A - Addr: 0x00001AAB, Size: 5, Value: (0x00000000) 0 Block u_GBOX_HP_40X2.u_gbox_clkmux_52x1_left_0 [] Attributes: - ROOT_MUX_SEL - Addr: 0x00001AB0, Size: 6, Value: (0x0000003F) 63 + ROOT_MUX_SEL - Addr: 0x00001AB0, Size: 6, Value: (0x00000002) 2 { $auto$clkbufmap.cc:261:execute$413 [CLK_BUF] [CLK_BUF:ROOT_MUX_SRC==HP_2_CC_10_5P] [from HP_2_CC_10_5P] } Block u_GBOX_HP_40X2.u_gbox_clkmux_52x1_left_1 [] Attributes: - ROOT_MUX_SEL - Addr: 0x00001AB6, Size: 6, Value: (0x0000003F) 63 + ROOT_MUX_SEL - Addr: 0x00001AB6, Size: 6, Value: (0x00000013) 19 { $auto$clkbufmap.cc:261:execute$413 [CLK_BUF] [CLK_BUF:ROOT_MUX_SRC==HR_5_CC_28_14P] [from HR_5_CC_28_14P] } Block u_GBOX_HP_40X2.u_gbox_clkmux_52x1_left_2 [] Attributes: ROOT_MUX_SEL - Addr: 0x00001ABC, Size: 6, Value: (0x0000003F) 63 @@ -4003,13 +4003,13 @@ Block u_GBOX_HP_40X2.u_gbox_PLLTS16FFCFRACF_1 [] pll_DACEN - Addr: 0x00001BB1, Size: 1, Value: (0x00000000) 0 Block u_GBOX_HP_40X2.u_gbox_pll_refmux_1 [] Attributes: - cfg_pllref_hv_rx_io_sel - Addr: 0x00001BB2, Size: 1, Value: (0x00000001) 1 { $iopadmap$dut.clock0 [I_BUF] [cfg_pllref_hv_rx_io_sel:1] [from HP_2_CC_10_5P] } - cfg_pllref_hv_bank_rx_io_sel - Addr: 0x00001BB3, Size: 2, Value: (0x00000000) 0 - cfg_pllref_hp_rx_io_sel - Addr: 0x00001BB5, Size: 2, Value: (0x00000000) 0 - cfg_pllref_hp_bank_rx_io_sel - Addr: 0x00001BB7, Size: 1, Value: (0x00000000) 0 - cfg_pllref_use_hv - Addr: 0x00001BB8, Size: 1, Value: (0x00000000) 0 - cfg_pllref_use_rosc - Addr: 0x00001BB9, Size: 1, Value: (0x00000000) 0 - cfg_pllref_use_div - Addr: 0x00001BBA, Size: 1, Value: (0x00000001) 1 { $iopadmap$dut.clock0 [I_BUF] [cfg_pllref_use_div:1] [from HP_2_CC_10_5P] } + cfg_pllref_hv_rx_io_sel - Addr: 0x00001BB2, Size: 1, Value: (0x00000001) 1 { $iopadmap$dut.clock0 [I_BUF] [cfg_pllref_hv_rx_io_sel:1] [from HP_2_CC_10_5P], $auto$clkbufmap.cc:261:execute$413 [CLK_BUF] [CLK_BUF:PLL_REFMUX_SRC==HR_5_CC_28_14P] [from HR_5_CC_28_14P] } + cfg_pllref_hv_bank_rx_io_sel - Addr: 0x00001BB3, Size: 2, Value: (0x00000001) 1 { $auto$clkbufmap.cc:261:execute$413 [CLK_BUF] [CLK_BUF:PLL_REFMUX_SRC==HR_5_CC_28_14P] [from HR_5_CC_28_14P] } + cfg_pllref_hp_rx_io_sel - Addr: 0x00001BB5, Size: 2, Value: (0x00000001) 1 { $auto$clkbufmap.cc:261:execute$413 [CLK_BUF] [CLK_BUF:PLL_REFMUX_SRC==HP_2_CC_10_5P] [from HP_2_CC_10_5P] } + cfg_pllref_hp_bank_rx_io_sel - Addr: 0x00001BB7, Size: 1, Value: (0x00000001) 1 { $auto$clkbufmap.cc:261:execute$413 [CLK_BUF] [CLK_BUF:PLL_REFMUX_SRC==HP_2_CC_10_5P] [from HP_2_CC_10_5P] } + cfg_pllref_use_hv - Addr: 0x00001BB8, Size: 1, Value: (0x00000001) 1 { $auto$clkbufmap.cc:261:execute$413 [CLK_BUF] [CLK_BUF:PLL_REFMUX_SRC==HP_2_CC_10_5P] [from HP_2_CC_10_5P], $auto$clkbufmap.cc:261:execute$413 [CLK_BUF] [CLK_BUF:PLL_REFMUX_SRC==HR_5_CC_28_14P] [from HR_5_CC_28_14P] } + cfg_pllref_use_rosc - Addr: 0x00001BB9, Size: 1, Value: (0x00000000) 0 { $auto$clkbufmap.cc:261:execute$413 [CLK_BUF] [CLK_BUF:PLL_REFMUX_SRC==HP_2_CC_10_5P] [from HP_2_CC_10_5P], $auto$clkbufmap.cc:261:execute$413 [CLK_BUF] [CLK_BUF:PLL_REFMUX_SRC==HR_5_CC_28_14P] [from HR_5_CC_28_14P] } + cfg_pllref_use_div - Addr: 0x00001BBA, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.clock0 [I_BUF] [cfg_pllref_use_div:1] [from HP_2_CC_10_5P], $auto$clkbufmap.cc:261:execute$413 [CLK_BUF] [CLK_BUF:PLL_REFMUX_SRC==HP_2_CC_10_5P] [from HP_2_CC_10_5P], $auto$clkbufmap.cc:261:execute$413 [CLK_BUF] [CLK_BUF:PLL_REFMUX_SRC==HR_5_CC_28_14P] [from HR_5_CC_28_14P] } Block u_GBOX_HV_40X2_VL.u_HV_GBOX_BK0_B_19 [HR_1_39_19N] Attributes: RATE - Addr: 0x00001BBB, Size: 4, Value: (0x00000000) 0 @@ -5764,28 +5764,28 @@ Block u_GBOX_HV_40X2_VL.u_HV_GBOX_BK1_B_3 [HR_2_7_3N] MC - Addr: 0x000027B1, Size: 4, Value: (0x00000000) 0 Block u_GBOX_HV_40X2_VL.u_HV_GBOX_BK1_A_3 [HR_2_6_3P] Attributes: - RATE - Addr: 0x000027B5, Size: 4, Value: (0x00000003) 3 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==default] } - MASTER_SLAVE - Addr: 0x000027B9, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==default] } - PEER_IS_ON - Addr: 0x000027BA, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==default] } - TX_CLOCK_IO - Addr: 0x000027BB, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==default] } - TX_DDR_MODE - Addr: 0x000027BC, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==default] } - TX_BYPASS - Addr: 0x000027BE, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==default] } - TX_CLK_PHASE - Addr: 0x000027BF, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==default] } - TX_DLY - Addr: 0x000027C1, Size: 6, Value: (0x00000000) 0 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==default] } - RX_DDR_MODE - Addr: 0x000027C7, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==default] } - RX_BYPASS - Addr: 0x000027C9, Size: 1, Value: (0x00000001) 1 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==default] } + RATE - Addr: 0x000027B5, Size: 4, Value: (0x00000003) 3 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + MASTER_SLAVE - Addr: 0x000027B9, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + PEER_IS_ON - Addr: 0x000027BA, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + TX_CLOCK_IO - Addr: 0x000027BB, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + TX_DDR_MODE - Addr: 0x000027BC, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + TX_BYPASS - Addr: 0x000027BE, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + TX_CLK_PHASE - Addr: 0x000027BF, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + TX_DLY - Addr: 0x000027C1, Size: 6, Value: (0x00000000) 0 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + RX_DDR_MODE - Addr: 0x000027C7, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + RX_BYPASS - Addr: 0x000027C9, Size: 1, Value: (0x00000001) 1 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } RX_DLY - Addr: 0x000027CA, Size: 6, Value: (0x00000000) 0 - RX_DPA_MODE - Addr: 0x000027D0, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==default] } - RX_MIPI_MODE - Addr: 0x000027D2, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==default] } - TX_MODE - Addr: 0x000027D3, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==default] } - RX_MODE - Addr: 0x000027D4, Size: 1, Value: (0x00000001) 1 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==default] } - RX_CLOCK_IO - Addr: 0x000027D5, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==default] } - DFEN - Addr: 0x000027D6, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==default] } - SR - Addr: 0x000027D7, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==default] } + RX_DPA_MODE - Addr: 0x000027D0, Size: 2, Value: (0x00000000) 0 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + RX_MIPI_MODE - Addr: 0x000027D2, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + TX_MODE - Addr: 0x000027D3, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + RX_MODE - Addr: 0x000027D4, Size: 1, Value: (0x00000001) 1 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + RX_CLOCK_IO - Addr: 0x000027D5, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + DFEN - Addr: 0x000027D6, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + SR - Addr: 0x000027D7, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } PE - Addr: 0x000027D8, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.d [I_BUF] [I_BUF:WEAK_KEEPER==NONE] } PUD - Addr: 0x000027D9, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.d [I_BUF] [I_BUF:WEAK_KEEPER==NONE] } - DFODTEN - Addr: 0x000027DA, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==default] } - MC - Addr: 0x000027DB, Size: 4, Value: (0x00000001) 1 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==default] } + DFODTEN - Addr: 0x000027DA, Size: 1, Value: (0x00000000) 0 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } + MC - Addr: 0x000027DB, Size: 4, Value: (0x00000001) 1 { $iopadmap$dut.d [I_BUF] [I_BUF:IOSTANDARD==DEFAULT] } Block u_GBOX_HV_40X2_VL.u_HV_GBOX_BK1_B_2 [HR_2_5_2N] Attributes: RATE - Addr: 0x000027DF, Size: 4, Value: (0x00000000) 0 diff --git a/tests/unittest/ModelConfig/golden/model_config_tcl.golden.txt b/tests/unittest/ModelConfig/golden/model_config_tcl.txt similarity index 100% rename from tests/unittest/ModelConfig/golden/model_config_tcl.golden.txt rename to tests/unittest/ModelConfig/golden/model_config_tcl.txt diff --git a/tests/unittest/ModelConfig/golden/model_config_top_ric.golden.txt b/tests/unittest/ModelConfig/golden/model_config_top_ric.txt similarity index 100% rename from tests/unittest/ModelConfig/golden/model_config_top_ric.golden.txt rename to tests/unittest/ModelConfig/golden/model_config_top_ric.txt diff --git a/tests/unittest/ModelConfig/golden/model_config_word.golden.txt b/tests/unittest/ModelConfig/golden/model_config_word.txt similarity index 100% rename from tests/unittest/ModelConfig/golden/model_config_word.golden.txt rename to tests/unittest/ModelConfig/golden/model_config_word.txt diff --git a/tests/unittest/ModelConfig/model_config_netlist.ppdb.json b/tests/unittest/ModelConfig/model_config_netlist.ppdb.json index 00e909346..78490c279 100644 --- a/tests/unittest/ModelConfig/model_config_netlist.ppdb.json +++ b/tests/unittest/ModelConfig/model_config_netlist.ppdb.json @@ -74,6 +74,49 @@ "properties" : { } }, + { + "module" : "I_BUF", + "name" : "$iopadmap$dut.clock1", + "linked_object" : "clock1", + "location" : "HR_5_CC_10_5P", + "connectivity" : { + "I" : "clock1", + "O" : "$iopadmap$clock1" + }, + "parameters" : { + "WEAK_KEEPER" : "NONE" + }, + "properties" : { + } + }, + { + "module" : "WIRE", + "name" : "AUTO CLK_BUF clock1 #0", + "linked_object" : "clock1", + "location" : "HR_5_CC_10_5P", + "connectivity" : { + "I" : "$iopadmap$clock1", + "O" : "$auto$clkbufmap.cc:262:execute$414" + }, + "parameters" : { + }, + "properties" : { + } + }, + { + "module" : "CLK_BUF", + "name" : "$auto$clkbufmap.cc:261:execute$413", + "linked_object" : "clock1", + "location" : "HR_5_CC_10_5P", + "connectivity" : { + "I" : "$auto$clkbufmap.cc:262:execute$414", + "O" : "$auto$clkbufmap.cc:294:execute$415" + }, + "parameters" : { + }, + "properties" : { + } + }, { "module" : "I_BUF", "name" : "$iopadmap$dut.d", diff --git a/tests/unittest/ModelConfig/ric/CLK_BUF.api.json b/tests/unittest/ModelConfig/ric/CLK_BUF.api.json new file mode 100644 index 000000000..02cf7a982 --- /dev/null +++ b/tests/unittest/ModelConfig/ric/CLK_BUF.api.json @@ -0,0 +1,1362 @@ +{ + "CLK_BUF": { + "FCLK_MUX_SRC==DEFAULT": [ + { + "attr": "cfg_hp_rxclk_phase_sel_B_0", + "value": "rxclk_phase_sel_B_0_A0" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_B_1", + "value": "rxclk_phase_sel_B_1_A0" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_A_0", + "value": "rxclk_phase_sel_A_0_A0" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_A_1", + "value": "rxclk_phase_sel_A_1_A0" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_B_0", + "value": "rx_fclkio_sel_B_0_A0" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_B_1", + "value": "rx_fclkio_sel_B_1_A0" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_A_0", + "value": "rx_fclkio_sel_A_0_A0" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_A_1", + "value": "rx_fclkio_sel_A_1_A0" + }, + { + "attr": "cfg_hp_vco_clk_sel_B_0", + "value": "vco_clk_sel_B_0_A0" + }, + { + "attr": "cfg_hp_vco_clk_sel_B_1", + "value": "vco_clk_sel_B_1_A0" + }, + { + "attr": "cfg_hp_vco_clk_sel_A_0", + "value": "vco_clk_sel_A_0_A0" + }, + { + "attr": "cfg_hp_vco_clk_sel_A_1", + "value": "vco_clk_sel_A_1_A0" + } + ], + "FCLK_MUX_SRC==HP_1_CC_10_5P": [ + { + "attr": "cfg_hp_rxclk_phase_sel_B_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_B_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_A_0", + "value": "rxclk_phase_sel_A_0_A1" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_A_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_B_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_B_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_A_0", + "value": "rx_fclkio_sel_A_0_A0" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_A_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_B_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_B_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_A_0", + "value": "vco_clk_sel_A_0_A0" + }, + { + "attr": "cfg_hp_vco_clk_sel_A_1", + "value": "__DONT__" + } + ], + "FCLK_MUX_SRC==HP_1_CC_28_14P": [ + { + "attr": "cfg_hp_rxclk_phase_sel_B_0", + "value": "rxclk_phase_sel_B_0_A1" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_B_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_A_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_A_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_B_0", + "value": "rx_fclkio_sel_B_0_A1" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_B_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_A_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_A_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_B_0", + "value": "vco_clk_sel_B_0_A0" + }, + { + "attr": "cfg_hp_vco_clk_sel_B_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_A_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_A_1", + "value": "__DONT__" + } + ], + "FCLK_MUX_SRC==HP_2_CC_10_5P": [ + { + "attr": "cfg_hp_rxclk_phase_sel_B_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_B_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_A_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_A_1", + "value": "rxclk_phase_sel_A_1_A1" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_B_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_B_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_A_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_A_1", + "value": "rx_fclkio_sel_A_1_A0" + }, + { + "attr": "cfg_hp_vco_clk_sel_B_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_B_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_A_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_A_1", + "value": "vco_clk_sel_A_1_A0" + } + ], + "FCLK_MUX_SRC==HP_2_CC_28_14P": [ + { + "attr": "cfg_hp_rxclk_phase_sel_B_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_B_1", + "value": "rxclk_phase_sel_B_1_A1" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_A_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_A_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_B_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_B_1", + "value": "rx_fclkio_sel_B_1_A1" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_A_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_A_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_B_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_B_1", + "value": "vco_clk_sel_B_1_A0" + }, + { + "attr": "cfg_hp_vco_clk_sel_A_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_A_1", + "value": "__DONT__" + } + ], + "FCLK_MUX_SRC==HR_1_CC_10_5P": [ + { + "attr": "cfg_hp_rxclk_phase_sel_B_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_B_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_A_0", + "value": "rxclk_phase_sel_A_0_A1" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_A_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_B_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_B_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_A_0", + "value": "rx_fclkio_sel_A_0_A0" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_A_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_B_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_B_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_A_0", + "value": "vco_clk_sel_A_0_A0" + }, + { + "attr": "cfg_hp_vco_clk_sel_A_1", + "value": "__DONT__" + } + ], + "FCLK_MUX_SRC==HR_1_CC_28_14P": [ + { + "attr": "cfg_hp_rxclk_phase_sel_B_0", + "value": "rxclk_phase_sel_B_0_A1" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_B_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_A_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_A_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_B_0", + "value": "rx_fclkio_sel_B_0_A1" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_B_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_A_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_A_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_B_0", + "value": "vco_clk_sel_B_0_A0" + }, + { + "attr": "cfg_hp_vco_clk_sel_B_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_A_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_A_1", + "value": "__DONT__" + } + ], + "FCLK_MUX_SRC==HR_2_CC_10_5P": [ + { + "attr": "cfg_hp_rxclk_phase_sel_B_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_B_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_A_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_A_1", + "value": "rxclk_phase_sel_A_1_A1" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_B_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_B_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_A_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_A_1", + "value": "rx_fclkio_sel_A_1_A0" + }, + { + "attr": "cfg_hp_vco_clk_sel_B_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_B_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_A_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_A_1", + "value": "vco_clk_sel_A_1_A0" + } + ], + "FCLK_MUX_SRC==HR_2_CC_28_14P": [ + { + "attr": "cfg_hp_rxclk_phase_sel_B_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_B_1", + "value": "rxclk_phase_sel_B_1_A1" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_A_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_A_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_B_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_B_1", + "value": "rx_fclkio_sel_B_1_A1" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_A_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_A_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_B_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_B_1", + "value": "vco_clk_sel_B_1_A0" + }, + { + "attr": "cfg_hp_vco_clk_sel_A_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_A_1", + "value": "__DONT__" + } + ], + "FCLK_MUX_SRC==HR_4_CC_10_5P": [ + { + "attr": "cfg_hp_rxclk_phase_sel_B_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_B_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_A_0", + "value": "rxclk_phase_sel_A_0_A1" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_A_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_B_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_B_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_A_0", + "value": "rx_fclkio_sel_A_0_A0" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_A_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_B_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_B_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_A_0", + "value": "vco_clk_sel_A_0_A0" + }, + { + "attr": "cfg_hp_vco_clk_sel_A_1", + "value": "__DONT__" + } + ], + "FCLK_MUX_SRC==HR_4_CC_28_14P": [ + { + "attr": "cfg_hp_rxclk_phase_sel_B_0", + "value": "rxclk_phase_sel_B_0_A1" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_B_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_A_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_A_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_B_0", + "value": "rx_fclkio_sel_B_0_A1" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_B_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_A_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_A_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_B_0", + "value": "vco_clk_sel_B_0_A0" + }, + { + "attr": "cfg_hp_vco_clk_sel_B_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_A_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_A_1", + "value": "__DONT__" + } + ], + "FCLK_MUX_SRC==HR_5_CC_10_5P": [ + { + "attr": "cfg_hp_rxclk_phase_sel_B_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_B_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_A_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_A_1", + "value": "rxclk_phase_sel_A_1_A1" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_B_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_B_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_A_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_A_1", + "value": "rx_fclkio_sel_A_1_A0" + }, + { + "attr": "cfg_hp_vco_clk_sel_B_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_B_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_A_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_A_1", + "value": "vco_clk_sel_A_1_A0" + } + ], + "FCLK_MUX_SRC==HR_5_CC_28_14P": [ + { + "attr": "cfg_hp_rxclk_phase_sel_B_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_B_1", + "value": "rxclk_phase_sel_B_1_A1" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_A_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rxclk_phase_sel_A_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_B_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_B_1", + "value": "rx_fclkio_sel_B_1_A1" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_A_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_rx_fclkio_sel_A_1", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_B_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_B_1", + "value": "vco_clk_sel_B_1_A0" + }, + { + "attr": "cfg_hp_vco_clk_sel_A_0", + "value": "__DONT__" + }, + { + "attr": "cfg_hp_vco_clk_sel_A_1", + "value": "__DONT__" + } + ], + "GBOX_TOP_SRC==DEFAULT": [ + { + "attr": "TX_BYPASS", + "value": "TX_bypass" + } + ], + "PLL_REFMUX_SRC==DEFAULT": [ + { + "attr": "cfg_pllref_hv_rx_io_sel", + "value": "pllref_hv_rx_io_sel_0" + }, + { + "attr": "cfg_pllref_hv_bank_rx_io_sel", + "value": "0" + }, + { + "attr": "cfg_pllref_hp_rx_io_sel", + "value": "pllref_hp_rx_io_sel_0" + }, + { + "attr": "cfg_pllref_hp_bank_rx_io_sel", + "value": "pllref_hp_bank_rx_io_sel_0" + }, + { + "attr": "cfg_pllref_use_hv", + "value": "pllref_use_hv_0" + }, + { + "attr": "cfg_pllref_use_rosc", + "value": "pllref_use_rosc_0" + }, + { + "attr": "cfg_pllref_use_div", + "value": "pllref_use_div_0" + } + ], + "PLL_REFMUX_SRC==HP_1_CC_10_5P": [ + { + "attr": "cfg_pllref_hv_rx_io_sel", + "value": "__DONT__" + }, + { + "attr": "cfg_pllref_hv_bank_rx_io_sel", + "value": "__DONT__" + }, + { + "attr": "cfg_pllref_hp_rx_io_sel", + "value": "pllref_hp_rx_io_sel_0" + }, + { + "attr": "cfg_pllref_hp_bank_rx_io_sel", + "value": "pllref_hp_bank_rx_io_sel_0" + }, + { + "attr": "cfg_pllref_use_hv", + "value": "pllref_use_hv_0" + }, + { + "attr": "cfg_pllref_use_rosc", + "value": "pllref_use_rosc_0" + }, + { + "attr": "cfg_pllref_use_div", + "value": "pllref_use_div_0" + } + ], + "PLL_REFMUX_SRC==HP_1_CC_28_14P": [ + { + "attr": "cfg_pllref_hv_rx_io_sel", + "value": "__DONT__" + }, + { + "attr": "cfg_pllref_hv_bank_rx_io_sel", + "value": "__DONT__" + }, + { + "attr": "cfg_pllref_hp_rx_io_sel", + "value": "pllref_hp_rx_io_sel_3" + }, + { + "attr": "cfg_pllref_hp_bank_rx_io_sel", + "value": "pllref_hp_bank_rx_io_sel_0" + }, + { + "attr": "cfg_pllref_use_hv", + "value": "pllref_use_hv_0" + }, + { + "attr": "cfg_pllref_use_rosc", + "value": "pllref_use_rosc_0" + }, + { + "attr": "cfg_pllref_use_div", + "value": "pllref_use_div_0" + } + ], + "PLL_REFMUX_SRC==HP_2_CC_10_5P": [ + { + "attr": "cfg_pllref_hv_rx_io_sel", + "value": "__DONT__" + }, + { + "attr": "cfg_pllref_hv_bank_rx_io_sel", + "value": "__DONT__" + }, + { + "attr": "cfg_pllref_hp_rx_io_sel", + "value": "pllref_hp_rx_io_sel_1" + }, + { + "attr": "cfg_pllref_hp_bank_rx_io_sel", + "value": "pllref_hp_bank_rx_io_sel_1" + }, + { + "attr": "cfg_pllref_use_hv", + "value": "pllref_use_hv_0" + }, + { + "attr": "cfg_pllref_use_rosc", + "value": "pllref_use_rosc_0" + }, + { + "attr": "cfg_pllref_use_div", + "value": "pllref_use_div_0" + } + ], + "PLL_REFMUX_SRC==HP_2_CC_28_14P": [ + { + "attr": "cfg_pllref_hv_rx_io_sel", + "value": "__DONT__" + }, + { + "attr": "cfg_pllref_hv_bank_rx_io_sel", + "value": "__DONT__" + }, + { + "attr": "cfg_pllref_hp_rx_io_sel", + "value": "pllref_hp_rx_io_sel_2" + }, + { + "attr": "cfg_pllref_hp_bank_rx_io_sel", + "value": "pllref_hp_bank_rx_io_sel_1" + }, + { + "attr": "cfg_pllref_use_hv", + "value": "pllref_use_hv_0" + }, + { + "attr": "cfg_pllref_use_rosc", + "value": "pllref_use_rosc_0" + }, + { + "attr": "cfg_pllref_use_div", + "value": "pllref_use_div_0" + } + ], + "PLL_REFMUX_SRC==HR_1_CC_10_5P": [ + { + "attr": "cfg_pllref_hv_rx_io_sel", + "value": "pllref_hv_rx_io_sel_0" + }, + { + "attr": "cfg_pllref_hv_bank_rx_io_sel", + "value": "0" + }, + { + "attr": "cfg_pllref_hp_rx_io_sel", + "value": "__DONT__" + }, + { + "attr": "cfg_pllref_hp_bank_rx_io_sel", + "value": "__DONT__" + }, + { + "attr": "cfg_pllref_use_hv", + "value": "pllref_use_hv_1" + }, + { + "attr": "cfg_pllref_use_rosc", + "value": "pllref_use_rosc_0" + }, + { + "attr": "cfg_pllref_use_div", + "value": "pllref_use_div_0" + } + ], + "PLL_REFMUX_SRC==HR_1_CC_28_14P": [ + { + "attr": "cfg_pllref_hv_rx_io_sel", + "value": "pllref_hv_rx_io_sel_0" + }, + { + "attr": "cfg_pllref_hv_bank_rx_io_sel", + "value": "1" + }, + { + "attr": "cfg_pllref_hp_rx_io_sel", + "value": "__DONT__" + }, + { + "attr": "cfg_pllref_hp_bank_rx_io_sel", + "value": "__DONT__" + }, + { + "attr": "cfg_pllref_use_hv", + "value": "pllref_use_hv_1" + }, + { + "attr": "cfg_pllref_use_rosc", + "value": "pllref_use_rosc_0" + }, + { + "attr": "cfg_pllref_use_div", + "value": "pllref_use_div_0" + } + ], + "PLL_REFMUX_SRC==HR_2_CC_10_5P": [ + { + "attr": "cfg_pllref_hv_rx_io_sel", + "value": "pllref_hv_rx_io_sel_1" + }, + { + "attr": "cfg_pllref_hv_bank_rx_io_sel", + "value": "0" + }, + { + "attr": "cfg_pllref_hp_rx_io_sel", + "value": "__DONT__" + }, + { + "attr": "cfg_pllref_hp_bank_rx_io_sel", + "value": "__DONT__" + }, + { + "attr": "cfg_pllref_use_hv", + "value": "pllref_use_hv_1" + }, + { + "attr": "cfg_pllref_use_rosc", + "value": "pllref_use_rosc_0" + }, + { + "attr": "cfg_pllref_use_div", + "value": "pllref_use_div_0" + } + ], + "PLL_REFMUX_SRC==HR_2_CC_28_14P": [ + { + "attr": "cfg_pllref_hv_rx_io_sel", + "value": "pllref_hv_rx_io_sel_1" + }, + { + "attr": "cfg_pllref_hv_bank_rx_io_sel", + "value": "1" + }, + { + "attr": "cfg_pllref_hp_rx_io_sel", + "value": "__DONT__" + }, + { + "attr": "cfg_pllref_hp_bank_rx_io_sel", + "value": "__DONT__" + }, + { + "attr": "cfg_pllref_use_hv", + "value": "pllref_use_hv_1" + }, + { + "attr": "cfg_pllref_use_rosc", + "value": "pllref_use_rosc_0" + }, + { + "attr": "cfg_pllref_use_div", + "value": "pllref_use_div_0" + } + ], + "PLL_REFMUX_SRC==HR_4_CC_10_5P": [ + { + "attr": "cfg_pllref_hv_rx_io_sel", + "value": "pllref_hv_rx_io_sel_0" + }, + { + "attr": "cfg_pllref_hv_bank_rx_io_sel", + "value": "0" + }, + { + "attr": "cfg_pllref_hp_rx_io_sel", + "value": "__DONT__" + }, + { + "attr": "cfg_pllref_hp_bank_rx_io_sel", + "value": "__DONT__" + }, + { + "attr": "cfg_pllref_use_hv", + "value": "pllref_use_hv_1" + }, + { + "attr": "cfg_pllref_use_rosc", + "value": "pllref_use_rosc_0" + }, + { + "attr": "cfg_pllref_use_div", + "value": "pllref_use_div_0" + } + ], + "PLL_REFMUX_SRC==HR_4_CC_28_14P": [ + { + "attr": "cfg_pllref_hv_rx_io_sel", + "value": "pllref_hv_rx_io_sel_0" + }, + { + "attr": "cfg_pllref_hv_bank_rx_io_sel", + "value": "1" + }, + { + "attr": "cfg_pllref_hp_rx_io_sel", + "value": "__DONT__" + }, + { + "attr": "cfg_pllref_hp_bank_rx_io_sel", + "value": "__DONT__" + }, + { + "attr": "cfg_pllref_use_hv", + "value": "pllref_use_hv_1" + }, + { + "attr": "cfg_pllref_use_rosc", + "value": "pllref_use_rosc_0" + }, + { + "attr": "cfg_pllref_use_div", + "value": "pllref_use_div_0" + } + ], + "PLL_REFMUX_SRC==HR_5_CC_10_5P": [ + { + "attr": "cfg_pllref_hv_rx_io_sel", + "value": "pllref_hv_rx_io_sel_1" + }, + { + "attr": "cfg_pllref_hv_bank_rx_io_sel", + "value": "0" + }, + { + "attr": "cfg_pllref_hp_rx_io_sel", + "value": "__DONT__" + }, + { + "attr": "cfg_pllref_hp_bank_rx_io_sel", + "value": "__DONT__" + }, + { + "attr": "cfg_pllref_use_hv", + "value": "pllref_use_hv_1" + }, + { + "attr": "cfg_pllref_use_rosc", + "value": "pllref_use_rosc_0" + }, + { + "attr": "cfg_pllref_use_div", + "value": "pllref_use_div_0" + } + ], + "PLL_REFMUX_SRC==HR_5_CC_28_14P": [ + { + "attr": "cfg_pllref_hv_rx_io_sel", + "value": "pllref_hv_rx_io_sel_1" + }, + { + "attr": "cfg_pllref_hv_bank_rx_io_sel", + "value": "1" + }, + { + "attr": "cfg_pllref_hp_rx_io_sel", + "value": "__DONT__" + }, + { + "attr": "cfg_pllref_hp_bank_rx_io_sel", + "value": "__DONT__" + }, + { + "attr": "cfg_pllref_use_hv", + "value": "pllref_use_hv_1" + }, + { + "attr": "cfg_pllref_use_rosc", + "value": "pllref_use_rosc_0" + }, + { + "attr": "cfg_pllref_use_div", + "value": "pllref_use_div_0" + } + ], + "ROOT_BANK_CLKMUX_SRC==DEFAULT": [ + { + "attr": "CDR_CLK_ROOT_SEL_B", + "value": "0" + }, + { + "attr": "CDR_CLK_ROOT_SEL_A", + "value": "0" + }, + { + "attr": "CORE_CLK_ROOT_SEL_B", + "value": "0" + }, + { + "attr": "CORE_CLK_ROOT_SEL_A", + "value": "0" + } + ], + "ROOT_BANK_CLKMUX_SRC==HP_1_CC_10_5P": [ + { + "attr": "CDR_CLK_ROOT_SEL_B", + "value": "__DONT__" + }, + { + "attr": "CDR_CLK_ROOT_SEL_A", + "value": "__DONT__" + }, + { + "attr": "CORE_CLK_ROOT_SEL_B", + "value": "18" + }, + { + "attr": "CORE_CLK_ROOT_SEL_A", + "value": "__DONT__" + } + ], + "ROOT_BANK_CLKMUX_SRC==HP_1_CC_28_14P": [ + { + "attr": "CDR_CLK_ROOT_SEL_B", + "value": "__DONT__" + }, + { + "attr": "CDR_CLK_ROOT_SEL_A", + "value": "__DONT__" + }, + { + "attr": "CORE_CLK_ROOT_SEL_B", + "value": "__DONT__" + }, + { + "attr": "CORE_CLK_ROOT_SEL_A", + "value": "18" + } + ], + "ROOT_BANK_CLKMUX_SRC==HP_2_CC_10_5P": [ + { + "attr": "CDR_CLK_ROOT_SEL_B", + "value": "__DONT__" + }, + { + "attr": "CDR_CLK_ROOT_SEL_A", + "value": "__DONT__" + }, + { + "attr": "CORE_CLK_ROOT_SEL_B", + "value": "18" + }, + { + "attr": "CORE_CLK_ROOT_SEL_A", + "value": "__DONT__" + } + ], + "ROOT_BANK_CLKMUX_SRC==HP_2_CC_28_14P": [ + { + "attr": "CDR_CLK_ROOT_SEL_B", + "value": "__DONT__" + }, + { + "attr": "CDR_CLK_ROOT_SEL_A", + "value": "__DONT__" + }, + { + "attr": "CORE_CLK_ROOT_SEL_B", + "value": "__DONT__" + }, + { + "attr": "CORE_CLK_ROOT_SEL_A", + "value": "18" + } + ], + "ROOT_BANK_CLKMUX_SRC==HR_1_CC_10_5P": [ + { + "attr": "CDR_CLK_ROOT_SEL_B", + "value": "__DONT__" + }, + { + "attr": "CDR_CLK_ROOT_SEL_A", + "value": "__DONT__" + }, + { + "attr": "CORE_CLK_ROOT_SEL_B", + "value": "18" + }, + { + "attr": "CORE_CLK_ROOT_SEL_A", + "value": "__DONT__" + } + ], + "ROOT_BANK_CLKMUX_SRC==HR_1_CC_28_14P": [ + { + "attr": "CDR_CLK_ROOT_SEL_B", + "value": "__DONT__" + }, + { + "attr": "CDR_CLK_ROOT_SEL_A", + "value": "__DONT__" + }, + { + "attr": "CORE_CLK_ROOT_SEL_B", + "value": "__DONT__" + }, + { + "attr": "CORE_CLK_ROOT_SEL_A", + "value": "18" + } + ], + "ROOT_BANK_CLKMUX_SRC==HR_2_CC_10_5P": [ + { + "attr": "CDR_CLK_ROOT_SEL_B", + "value": "__DONT__" + }, + { + "attr": "CDR_CLK_ROOT_SEL_A", + "value": "__DONT__" + }, + { + "attr": "CORE_CLK_ROOT_SEL_B", + "value": "18" + }, + { + "attr": "CORE_CLK_ROOT_SEL_A", + "value": "__DONT__" + } + ], + "ROOT_BANK_CLKMUX_SRC==HR_2_CC_28_14P": [ + { + "attr": "CDR_CLK_ROOT_SEL_B", + "value": "__DONT__" + }, + { + "attr": "CDR_CLK_ROOT_SEL_A", + "value": "__DONT__" + }, + { + "attr": "CORE_CLK_ROOT_SEL_B", + "value": "__DONT__" + }, + { + "attr": "CORE_CLK_ROOT_SEL_A", + "value": "18" + } + ], + "ROOT_BANK_CLKMUX_SRC==HR_4_CC_10_5P": [ + { + "attr": "CDR_CLK_ROOT_SEL_B", + "value": "__DONT__" + }, + { + "attr": "CDR_CLK_ROOT_SEL_A", + "value": "__DONT__" + }, + { + "attr": "CORE_CLK_ROOT_SEL_B", + "value": "18" + }, + { + "attr": "CORE_CLK_ROOT_SEL_A", + "value": "__DONT__" + } + ], + "ROOT_BANK_CLKMUX_SRC==HR_4_CC_28_14P": [ + { + "attr": "CDR_CLK_ROOT_SEL_B", + "value": "__DONT__" + }, + { + "attr": "CDR_CLK_ROOT_SEL_A", + "value": "__DONT__" + }, + { + "attr": "CORE_CLK_ROOT_SEL_B", + "value": "__DONT__" + }, + { + "attr": "CORE_CLK_ROOT_SEL_A", + "value": "18" + } + ], + "ROOT_BANK_CLKMUX_SRC==HR_5_CC_10_5P": [ + { + "attr": "CDR_CLK_ROOT_SEL_B", + "value": "__DONT__" + }, + { + "attr": "CDR_CLK_ROOT_SEL_A", + "value": "__DONT__" + }, + { + "attr": "CORE_CLK_ROOT_SEL_B", + "value": "18" + }, + { + "attr": "CORE_CLK_ROOT_SEL_A", + "value": "__DONT__" + } + ], + "ROOT_BANK_CLKMUX_SRC==HR_5_CC_28_14P": [ + { + "attr": "CDR_CLK_ROOT_SEL_B", + "value": "__DONT__" + }, + { + "attr": "CDR_CLK_ROOT_SEL_A", + "value": "__DONT__" + }, + { + "attr": "CORE_CLK_ROOT_SEL_B", + "value": "__DONT__" + }, + { + "attr": "CORE_CLK_ROOT_SEL_A", + "value": "18" + } + ], + "ROOT_MUX_SRC==DEFAULT": [ + { + "attr": "ROOT_MUX_SEL", + "value": "0" + } + ], + "ROOT_MUX_SRC==HP_1_CC_10_5P": [ + { + "attr": "ROOT_MUX_SEL", + "value": "0" + } + ], + "ROOT_MUX_SRC==HP_1_CC_28_14P": [ + { + "attr": "ROOT_MUX_SEL", + "value": "1" + } + ], + "ROOT_MUX_SRC==HP_2_CC_10_5P": [ + { + "attr": "ROOT_MUX_SEL", + "value": "2" + } + ], + "ROOT_MUX_SRC==HP_2_CC_28_14P": [ + { + "attr": "ROOT_MUX_SEL", + "value": "3" + } + ], + "ROOT_MUX_SRC==HR_1_CC_10_5P": [ + { + "attr": "ROOT_MUX_SEL", + "value": "8" + } + ], + "ROOT_MUX_SRC==HR_1_CC_28_14P": [ + { + "attr": "ROOT_MUX_SEL", + "value": "9" + } + ], + "ROOT_MUX_SRC==HR_2_CC_10_5P": [ + { + "attr": "ROOT_MUX_SEL", + "value": "10" + } + ], + "ROOT_MUX_SRC==HR_2_CC_28_14P": [ + { + "attr": "ROOT_MUX_SEL", + "value": "11" + } + ], + "ROOT_MUX_SRC==HR_4_CC_10_5P": [ + { + "attr": "ROOT_MUX_SEL", + "value": "16" + } + ], + "ROOT_MUX_SRC==HR_4_CC_28_14P": [ + { + "attr": "ROOT_MUX_SEL", + "value": "17" + } + ], + "ROOT_MUX_SRC==HR_5_CC_10_5P": [ + { + "attr": "ROOT_MUX_SEL", + "value": "18" + } + ], + "ROOT_MUX_SRC==HR_5_CC_28_14P": [ + { + "attr": "ROOT_MUX_SEL", + "value": "19" + } + ] + } +} \ No newline at end of file diff --git a/tests/unittest/ModelConfig/ric/I_BUF.api.json b/tests/unittest/ModelConfig/ric/I_BUF.api.json index 86b079a68..7b747ca53 100644 --- a/tests/unittest/ModelConfig/ric/I_BUF.api.json +++ b/tests/unittest/ModelConfig/ric/I_BUF.api.json @@ -1,6 +1,6 @@ { "I_BUF": { - "IOSTANDARD==LVCMOS_12": [ + "IOSTANDARD==DEFAULT": [ { "attr": "RATE", "value": "Three" @@ -78,7 +78,7 @@ "value": "4'd1" } ], - "IOSTANDARD==LVCMOS_15": [ + "IOSTANDARD==LVCMOS_12": [ { "attr": "RATE", "value": "Three" @@ -156,7 +156,7 @@ "value": "4'd1" } ], - "IOSTANDARD==LVCMOS_18_HP": [ + "IOSTANDARD==LVCMOS_15": [ { "attr": "RATE", "value": "Three" @@ -234,7 +234,7 @@ "value": "4'd1" } ], - "IOSTANDARD==LVCMOS_18_HR": [ + "IOSTANDARD==LVCMOS_18_HP": [ { "attr": "RATE", "value": "Three" @@ -312,7 +312,7 @@ "value": "4'd1" } ], - "IOSTANDARD==LVCMOS_25": [ + "IOSTANDARD==LVCMOS_18_HR": [ { "attr": "RATE", "value": "Three" @@ -390,7 +390,7 @@ "value": "4'd1" } ], - "IOSTANDARD==LVCMOS_33": [ + "IOSTANDARD==LVCMOS_25": [ { "attr": "RATE", "value": "Three" @@ -468,7 +468,7 @@ "value": "4'd1" } ], - "IOSTANDARD==default": [ + "IOSTANDARD==LVCMOS_33": [ { "attr": "RATE", "value": "Three" @@ -546,7 +546,7 @@ "value": "4'd1" } ], - "WEAK_KEEPER==NONE": [ + "WEAK_KEEPER==DEFAULT": [ { "attr": "PE", "value": "PE_disable" @@ -556,34 +556,34 @@ "value": "PUD_disable" } ], - "WEAK_KEEPER==PULLDOWN": [ + "WEAK_KEEPER==NONE": [ { "attr": "PE", - "value": "PE_enable" + "value": "PE_disable" }, { "attr": "PUD", "value": "PUD_disable" } ], - "WEAK_KEEPER==PULLUP": [ + "WEAK_KEEPER==PULLDOWN": [ { "attr": "PE", "value": "PE_enable" }, { "attr": "PUD", - "value": "PUD_enable" + "value": "PUD_disable" } ], - "WEAK_KEEPER==default": [ + "WEAK_KEEPER==PULLUP": [ { "attr": "PE", - "value": "PE_disable" + "value": "PE_enable" }, { "attr": "PUD", - "value": "PUD_disable" + "value": "PUD_enable" } ] } diff --git a/tests/unittest/ModelConfig/ric/I_DELAY.api.json b/tests/unittest/ModelConfig/ric/I_DELAY.api.json index 88c611e64..552d15fc5 100644 --- a/tests/unittest/ModelConfig/ric/I_DELAY.api.json +++ b/tests/unittest/ModelConfig/ric/I_DELAY.api.json @@ -6,7 +6,7 @@ "value": "DELAY" } ], - "default": [ + "DELAY==DEFAULT": [ { "attr": "RX_DLY", "value": "6'd0" diff --git a/tests/unittest/ModelConfig/ric/O_BUF.api.json b/tests/unittest/ModelConfig/ric/O_BUF.api.json index de1adfc7b..881cf7838 100644 --- a/tests/unittest/ModelConfig/ric/O_BUF.api.json +++ b/tests/unittest/ModelConfig/ric/O_BUF.api.json @@ -1,6 +1,6 @@ { "O_BUF": { - "IOSTANDARD==LVCMOS_12": [ + "IOSTANDARD==DEFAULT": [ { "attr": "RATE", "value": "Three" @@ -86,7 +86,7 @@ "value": "4'd1" } ], - "IOSTANDARD==LVCMOS_15": [ + "IOSTANDARD==LVCMOS_12": [ { "attr": "RATE", "value": "Three" @@ -172,7 +172,7 @@ "value": "4'd1" } ], - "IOSTANDARD==LVCMOS_18_HP": [ + "IOSTANDARD==LVCMOS_15": [ { "attr": "RATE", "value": "Three" @@ -258,7 +258,7 @@ "value": "4'd1" } ], - "IOSTANDARD==LVCMOS_18_HR": [ + "IOSTANDARD==LVCMOS_18_HP": [ { "attr": "RATE", "value": "Three" @@ -344,7 +344,7 @@ "value": "4'd1" } ], - "IOSTANDARD==LVCMOS_25": [ + "IOSTANDARD==LVCMOS_18_HR": [ { "attr": "RATE", "value": "Three" @@ -430,7 +430,7 @@ "value": "4'd1" } ], - "IOSTANDARD==LVCMOS_33": [ + "IOSTANDARD==LVCMOS_25": [ { "attr": "RATE", "value": "Three" @@ -516,7 +516,7 @@ "value": "4'd1" } ], - "IOSTANDARD==default": [ + "IOSTANDARD==LVCMOS_33": [ { "attr": "RATE", "value": "Three" diff --git a/tests/unittest/ModelConfig/ric/O_DELAY.api.json b/tests/unittest/ModelConfig/ric/O_DELAY.api.json index d09a0da32..af5a1d86c 100644 --- a/tests/unittest/ModelConfig/ric/O_DELAY.api.json +++ b/tests/unittest/ModelConfig/ric/O_DELAY.api.json @@ -6,7 +6,7 @@ "value": "DELAY" } ], - "default": [ + "DELAY==DEFAULT": [ { "attr": "TX_DLY", "value": "6'd0"