ScriptL Web Application Home Page

This application, ScriptL, is used to analyze the phase noise performance of a system. It is organized as a "single-page web application" also known as an Ajax application. This includes a block diagram editor where the system to be analyzed can be described and areas (sections) where results can be plotted or tabulated and where derived results like integrated phase noise and loop stability margins can be displayed.

This version of the home page (view) is not actually part of the single-page application. But the links on this page are links to the actual application and when used will cause the application to be loaded into your browser's application cache, unless this feature is disabled on your browser. The name of the actual application page file is index-ac.html. There is another version which is identical except that it does not cause the application files to be loaded into your browser's application cache but instead to always be loaded from the server. You can use that version of the application page if you don't care about being able to use the application when offline by loading the index-nc.html file.

The block diagram section consists of a drawing area where the block diagram is created on an "infinite" surface, scroll bars for adjusting the visible part of the drawing surface, and a set of "tools" for manipulating the block diagram.
The Block Diagram Content section summarizes the contents of the block diagram: the noise densities, block equations and topology. This information can be useful for troubleshooting problems with the block diagram.
The Compiler section shows the compiler output which results from processing the block equations. This information can sometimes be useful for troubleshooting problems with the block equations.
The Swept Results section displays curves of results versus frequency either as plots or tables. Plots can include gain magnitude, phase and/or phase noise density curves.
The Summary Results section contains two sub-sections. One integrates phase noise curves and the other calculates stability margins for any feedback loops in the block diagram.

Overview of the Application

Even though the application consists of a single HTML "page" or file there are three distinct "page views" which can be selected. You are currently viewing the "home page view." This is the view which is shown the first time that someone loads the application. It provides an introduction to the application.

The heart of the application is the application page. This page is divided into sections where the normal work flow would proceed from the top of the page to the bottom as one performs an analysis. The figure to the right shows a sample of the application page view with all sections expanded. Hover the mouse cursor over a section to see an enlarged view of it and a short description of what it is used for.

There is also a help page. Since this application deals with a fairly complex subject it would not be reasonable to expect someone new to this subject to be able to sit down and start using it right away, at least for anything beyond the most simple cases, without spending some time learning about the program and about phase noise. The help material does not attempt to do a thorough job of teaching about phase noise but hopefully will provide a starting point (especially once that section is completed!). The main focus will be on describing how to use the application. Hopefully this is reasonably intuitive but it will still require some explanation.

Several example files are available online. These do not require you to have an account in order to read them. These are meant as a help feature as well as being useful as a starting point for your own models if you don't want to have to start from scratch.

Key Features

The intent of ScriptL is to make it (relatively) easy to describe and analyze an arbitrary system for phase noise performance. The system topology is entered using a block diagram so that an arbitrary architecture can be described. Noise densities are entered as piece-wise linear curves defined by a series of data points. And block transfer functions are entered using their Laplace transforms in a simple, C-like language.

The results of the analyses can be plotted (versus frequency) and derived results such as integrated phase noise and loop stability margins can be calculated.

There is always a tradeoff between simplicity and flexibility. A dedicated phase noise analysis tool based on a small number of cannonical models would be very simple to use. One can also analyze phase noise using general purpose modeling tools, or even (in a pinch) Excel. ScriptL is meant to provide a middle path. One which is specifically designed for phase noise analysis, especially of phase-locked loop synthesizer designs, but which allows the analysis of virtually any system and architecture without requiring too much work on the user's part. With a library of existing designs, including the example files provided online, you should be able to build new models in a short period of time. Most of the work involves describing your system, and that's something that the application can't really help you with. But once you can describe the noise source densities and noise transfer functions of your system this application will allow you to quickly put it all together and generate system phase noise performance results.

Quick Start

Probably the fastest way to get started is to open one of the example files that are available on the server and experiment with that. Use the "Open File" menu item near the top of the page to invoke an open file dialog. Select the Example Files radio button and select an example file from the list and then click the Open button. The block diagram for the system will show in the block diagram editor just below the main file menu. You can use the block edit tool (the right-most of the large toolbar buttons) to look at the "contents" of each of the blocks, especially the gain blocks and noise sources. (Note that help on use of the tools is shown in the message area below the block diagram editing area.) Or one can expand the Block Diagram Content section and click the "Collect" button to see a summary of the entire model. Proceeding to the Swept Result Section one can plot (or tabulate) various values from this model. Use the two radio buttons to select plotted or tabulated results. Click the Tabulate/Plot button to generate the plot or table. The example files contain multiple "curve sets" which can be selected using the drop-down list control in the upper-left corner of the Swept Result Section. The plot and/or table will need to be refreshed after changing the active curve set. You can also use the Curve Selection menu item from the menu just above the Swept Result Section to select other curves to be displayed. Expand the Summary Results section and calculate integrated phase noise and, if appropriate, loop stability margins.

Beta Release Warning

Be advised that this software is still in an early stage of release, hopefully to the "Beta" level of maturity. It is likely to have many "rough edges" so try not to be too surprised if you find some. But hopefully this will not happen often.

We would appreciate being informed of any problems that you encounter while using the application. Every effort will be made to address any issues in a timely fashion. You can contact us using the email link at the bottom of each page.

There are a few features which have not been incorporated yet, such as support for "multiple touching loops" and hierarchical block diagrams. These are planned for the future but this initial version has been simplified in hopes of making it as reliable and stable as possible. And enhancements like better drawing tools for the block diagram are anticipated.

Tutorial

An interactive tutorial is provided which will help you get started. To use this tutorial, click on the "tutorial" link at the top of the application page. This is the fourth link from the right side of the page. This tutorial is very brief at this time but it will introduce you to some of the main features of the application. You can exit the tutorial at any time so feel free to try it out.

Required Software

Since this is an "Ajax" application you must have JavaScript enabled in order to use it. In addition it makes extensive use of HTML 5 Canvas elements, both for the block diagram editor and for displaying plotted results. Thus a browser that "fully" supports HTML 5 is assumed by the application. In particular, for Internet Explorer, version 9.0 or later is required. The Firefox and Chrome browsers have supported this for a while, since versions 3.5 and 4.0 respectively.

In order to take advantage of the offline application caching feature, where all of the application files are "installed" in your browser so that you can use the application even when offline, you will need at least Internet Explorer 10.0, Firefox 29.0, Chrome 34.0, Safari 7.0 or Opera 22.0. (It appears there might be problems when using Chrome on Linux.)

A display resolution of at least 1024 by 768 pixels is recommended. The page uses a fixed width and a horizontal resolution of 1024 (or more) pixels should allow viewing of the page without having to scroll horizontally. Scrolling vertically will usually be required.

It appears that at least some browsers (such as Firefox) will not allow the use of local storage if cookies are disabled. This does not seem to apply to third-party cookies so disabling these should be OK. But if all cookies are disabled you might have problems using this application due to the lack of local storage capability. You should be able to read and work with the online example files with cookies and local storage disabled.

User Accounts

You can use this application without signing up for a user account. An account is not required to download and run the JavaScript code for the application, or any of the other application files. Anybody can read the example files that are stored online. But if you want to store your own data files online you will need an account so that these files can be identified. You can also use local browser storage for your data files. If you do register for an online account you should provide a valid email address in case you ever need to reset your password (like if you forget it) but otherwise you can enter anything as your email address (as long as the format is valid).

Privacy Policy

We will not share your information or your saved data with anyone else. But keep in mind that this site does not presently use any sort of encryption for data transmission or storage so you should not use it for any sensitive work.

This application uses cookies to manage sessions but not for any other purposes. So you won't be able to use the server for storing data if you have all cookies disabled. If you can disable just third-party cookies that should be OK, but if you disable all cookies you will probably have problems logging into and out of the server, etc. Note that cookie support is often also required for use of local storage, which is somewhat unfortunate.

Legal - Licensing and Warranty

This application is free to use. As an "Ajax" application it wouldn't really be possible to lock up the code even if this was desired. But the application itself (JavaScript and PHP code) as well as the images, styles, text files, and other artifacts of the application are copyrighted by the author and are licensed under a Creative Commons (CC) by attribution, non-commercial, share alike license. What this means, in brief, is that you are free to use the program, and to copy and adapt the code, for non-commercial purposes, as long as you attribute the original work to the author and release any derived work under this same license. But you should consult the Creative Commons site for the full text of the license and not rely on my summary of it.

There is no warrantee at all, expressed or implied, for this software. Every effort has been made to provide a product which is safe to use and which will produce correct results. But, especially until you gain familiarty with the application, you should always sanity check your results.