6 research outputs found
Refinement type contracts for verification of scientific investigative software
Our scientific knowledge is increasingly built on software output. User code
which defines data analysis pipelines and computational models is essential for
research in the natural and social sciences, but little is known about how to
ensure its correctness. The structure of this code and the development process
used to build it limit the utility of traditional testing methodology. Formal
methods for software verification have seen great success in ensuring code
correctness but generally require more specialized training, development time,
and funding than is available in the natural and social sciences. Here, we
present a Python library which uses lightweight formal methods to provide
correctness guarantees without the need for specialized knowledge or
substantial time investment. Our package provides runtime verification of
function entry and exit condition contracts using refinement types. It allows
checking hyperproperties within contracts and offers automated test case
generation to supplement online checking. We co-developed our tool with a
medium-sized (3000 LOC) software package which simulates
decision-making in cognitive neuroscience. In addition to helping us locate
trivial bugs earlier on in the development cycle, our tool was able to locate
four bugs which may have been difficult to find using traditional testing
methods. It was also able to find bugs in user code which did not contain
contracts or refinement type annotations. This demonstrates how formal methods
can be used to verify the correctness of scientific software which is difficult
to test with mainstream approaches
A partial oracle for uniformity statistics
This paper investigates the problem of testing implementations of uniformity statistics. In this paper we used Metamorphic Testing to address the oracle problem, of checking the output of one or more test executions, for uniformity statistics. We defined a partial oracle that uses regression analysis (a Regression Model based Metamorphic Relation).
We investigated the effectiveness of our partial oracle. We found that the technique can achieve mutation scores ranging from 77.78% to 100%, and tends towards higher mutation scores in this range. These results are promising, and suggest that the Regression Model based Metamorphic Relation approach is a viable method of alleviating the oracle problem in implementations of uniformity statistics, and potentially other classes of statistics e.g. correlation statistics
Power-Aware high-level synthesis flow for mapping fpga designs
Present Field Programmable Gate Array (FPGA)
manufacturers incorporate multi-millions of logic resources
which enables hardware designers to design applications extending
to large scales. However, handling such applications by
existing FPGA Computer Aided Design (CAD) flow requires
more improvement in terms of area, performance and power
efficiency considerations. The current CAD flow requires the
input design to be in Register Transfer Level (RTL). RTL
input designs limit the design productivity only to hardware
experts in performing analysis for various optimisations. Optimising
RTL designs manually are increasingly hard. High-
Level Synthesis (HLS) is an approach capable of increasing
the design productivity of hardware applications compared to
commonly used Hardware Description Languages (HDLs) and is
known to be an intelligent approach for performing optimisations
at a higher level of abstraction. In this paper, an approach
that follows the HLS flow to cater to the mapping of FPGA
applications in a power efficient manner using a communicationaware
partitioning strategy is proposed. From experiments, it was
possible to achieve an average reduction of 8.39% routing thermal
power and 3.34% total power using the proposed approac