4 research outputs found

    Scalable Verification of Designs with Multiple Properties

    Get PDF
    Many industrial verification tasks entail checking a large number of properties on the same design. Formal verification techniques, such as model checking, can verify multiple properties concurrently, or sequentially one-at-a-time. State-of-the- art verification tools do not optimally exploit subproblem sharing between properties, leaving an opportunity to save considerable verification resources. A significant need therefore exists to develop efficient and scalable techniques that intelligently check multiple properties by utilizing implicit inter-property logical dependencies and subproblem sharing, and improve tool orchestration. We report on our investigation of the multiproperty model checking problem, and discuss research results, and highlight future research directions

    Декомпозиція вхідних даних у задачах генерування модульних тестів

    Get PDF
    The research aims to enhance the decomposition methods for the input data in automatic test task by searching for the new decomposition principles. The research uses isolation, structural and functional modeling to propose an advanced clusterization model for the source code of software under testing. Some issues of current approaches to input data partitioning in symbolic execution software are discussed. Consequently, the strong and weak points are highlighted. Furthermore, code decomposition methods for recovering software design from source code are compared to ones that symbolic execution systems use. The formed hypothesis assumes that approaches and principles which are used to obtain the "knowledge" about software could be utilized to generate better input data partition for test generation systems. The paper describes the benefits of advanced decomposition in automated unit testing. According to the analysis, the source code is the primary object to obtain the data for clustering algorithms. The research highlights the possible entities which could be a base node for clusterization and provides arguments for using function as one. The paper determines the characteristics set to calculate the distance between the generated clusters and determine elements that should be combined into a cluster. The research proposes to use caller and callee relationship between functions and write/read between function and data outside of it local scope as primary characteristics for clusterization. If argument or return type of a function is user defined, then it may be used as a secondary parameter. The paper describes the model to calculate the distance between the functions or function and clusters. This model could be used to construct the clusterization algorithms for the input data of test generation systems. The benefits of proposed solution are a possibility to use the defined characteristic as a source of additional information to generate the test purposes and set goals for symbolic execution and potential optimization of computations due to high similarity of elements in clusters.Для дослідження можливостей декомпозиції вхідних даних у задачах генерування модульних тестів застосовано методи ізолювання, структурне та функціональне моделювання. Проаналізовано наявні методи та виділено основні стратегії, які застосовуються системами символьного виконання. Описано їх переваги та недоліки. Запропоновано нові методи кластеризації вхідних даних для генерування модульних тестів. Визначено основні кроки для створення моделі кластеризації вхідних даних з використанням засобів символьного виконання. Обґрунтовано застосування коду як основного джерела даних для кластеризації. Охарактеризовано об'єкти, що містяться у вхідних даних або пов'язані з ними та є потенційними сутностями для кластеризації. Визначено функцію як множину операторів мови програмування, одиницею декомпозиції коду програми для генерування модульних тестів. Охарактеризовано її властивості за мірою придатності кількісних і якісних характеристик для створення функції подібності. Обґрунтовано вибір зв'язків з іншими функціями та звертань до даних за межами локальної області видимості функції як основних параметрів кластеризації. Визначено користувацькі типи даних, які використовуються для визначення параметрів і значення, що повертається, як можливі другорядні параметри кластеризації. Сформульовано задачу кластеризації на підставі обраних характеристик для вхідних даних, що використовуються для генерування тестів. Запропоновано методи обчислення міри близькості між окремими функціями, а також між функцією та кластером. Описано практичні методи для обчислення характеристик та сутностей з вхідних даних. Запропоновано подальші дослідження з метою визначення оптимальних значень коефіцієнтів для запропонованої моделі кластеризації та функції розпізнавання для перевірки близькості кластерів до відомих шаблонів, що створить додаткові можливості для генерування тестів

    Towards Coverage Closure: Using GoldMine Assertions for Generating Design Validation Stimulus

    Get PDF
    Coordinated Science Laboratory was formerly known as Control Systems Laborator

    Model checking large design spaces: Theory, tools, and experiments

    Get PDF
    In the early stages of design, there are frequently many different models of the system under development constituting a design space. The different models arise out of a need to weigh different design choices, to check core capabilities of system versions with varying features, or to analyze a future version against previous ones in the product line. Every unique combinations of choices yields competing system models that differ in terms of assumptions, implementations, and configurations. Formal verification techniques, like model checking, can aid system development by systematically comparing the different models in terms of functional correctness, however, applying model checking off-the-shelf may not scale due to the large size of the design spaces for today’s complex systems. We present scalable algorithms for design-space exploration using model checking that enable exhaustive comparison of all competing models in large design spaces. Model checking a design space entails checking multiple models and properties. Given a formal representation of the design space and properties expressing system specifications, we present algorithms that automatically prune the design space by finding inter-model relationships and property dependencies. Our design-space reduction technique is compatible with off-the-shelf model checkers, and only requires checking a small subset of models and properties to provide verification results for every model-property pair in the original design space. We evaluate our methodology on case-studies from NASA and Boeing; our techniques offer up to 9.4× speedup compared to traditional approaches. We observe that sequential enumeration of the design space generates models with small incremental differences. Typical model-checking algorithms do not take advantage of this information; they end up re-verifying “already-explored” state spaces across models. We present algorithms that learn and reuse information from solving related models against a property in sequential model-checking runs. We formalize heuristics to maximize reuse between runs by efficient “hashing” of models. Extensive experiments show that information reuse boosts runtime performance of sequential model-checking by up to 5.48×. Model checking design spaces often mandates checking several properties on individual models. State-of-the-art tools do not optimally exploit subproblem sharing between properties, leaving an opportunity to save verification resource via concurrent verification of “nearly-identical” properties. We present a near-linear runtime algorithm for partitioning properties into provably high-affinity groups for individual model-checking tasks. The verification effort expended for one property in a group can be directly reused to accelerate the verification of the others. The high-affinity groups may be refined based on semantic feedback, to provide an optimal multi-property localization solution. Our techniques significantly improve multi-property model-checking performance, and often yield \u3e4.0× speedup. Building upon these ideas, we optimize parallel verification to maximize the benefits of our proposed techniques. Model checking tools utilize parallelism, either in portfolio mode where different algorithm strategies run concurrently, or in partitioning mode where disjoint property subsets are verified independently. However, both approaches often degrade into highly-redundant work across processes, or under-utilize available processes. We propose methods to minimize redundant computation, and dynamically optimize work distribution when checking multiple properties for individual models. Our techniques offer a median 2.4× speedup for complex parallel verification tasks with thousands of properties
    corecore